通过记录XML文件和发送电子邮件实现自动化单元测试的简单方法



我是单元测试的新手。我目前正在游戏引擎Unity中设置一些单元+集成测试。我有一个简单的批处理脚本,通过命令行运行Unity,然后输出一个XML文件的结果(https://bitbucket.org/Unity-Technologies/unitytesttools/wiki/UnitTestsRunner)。

下面是一个成功测试的例子,通过在我的本地计算机上保存一个XML文件来记录。

<?xml version="1.0" encoding="utf-8"?>
<!--This file represents the results of running a test suite-->
<test-results name="Unity Tests" total="3" errors="0" failures="0" not-run="0" inconclusive="0" ignored="0" skipped="0" invalid="0" date="2016-09-17" time="17:41:27">
  <environment nunit-version="2.6.2-Unity" clr-version="2.0.50727.1433" os-version="Microsoft Windows NT 10.0.14393.0" platform="Win32NT" cwd="C:UsersUnitTesting_test" machine-name="Wikzo" user="Wikzo" user-domain="Wikzo" unity-version="5.4.0f3" unity-platform="StandaloneWindows" />
  <culture-info current-culture="en-US" current-uiculture="en-US" />
  <test-suite name="2_IntegrationTest" type="Assembly" executed="True" result="Success" success="True" time="4.060">
    <results>
      <test-case name="MoverTest" executed="True" result="Success" success="True" time="1.032">
        <reason>
          <message>
<![CDATA[Sent TestStarted
Pass 
]]>
          </message>
        </reason>
      </test-case>
      <test-case name="PowerUpTest" executed="True" result="Success" success="True" time="0.015">
        <reason>
          <message>
<![CDATA[Sent TestStarted
Pass 
]]>
          </message>
        </reason>
      </test-case>
      <test-case name="Sphere Drag Test" executed="True" result="Success" success="True" time="3.013">
        <reason>
          <message>
<![CDATA[Sent TestStarted
Pass (Plane)
]]>
          </message>
        </reason>
      </test-case>
    </results>
  </test-suite>
</test-results>

由于我以前从未使用过XML或自动构建/测试,所以我想获得一些关于如何以一种聪明而简单的方式接近它的指针。

现在的计划是每天晚上在一台本地机器上通过Windows的命令行运行这些测试(也许我将来会深入到服务器和Jenkins中,但现在我正在采取婴儿步骤)。如果测试失败(result="Failure"),我希望以某种方式得到通知,而不是手动读取XML日志。如果这可以通过例如给我发电子邮件或类似的不需要太多设置的东西来完成,那就太好了。

我该怎么做呢?是否有一种"IFTTT"风格的简单方法来做到这一点?

您的XML文件看起来很像由NUnit测试套件生成的XML文件。你能确认这些测试是否基于NUnit吗?

如果是这种情况,大多数构建服务器已经包含解析这些测试输出文件的组件。它们还具有在失败时发送电子邮件等功能。然而,如果你设置了一个像Jenkins这样的构建服务器,那么你就不需要邮件了——你只需要在早上检查构建服务器就可以了。

值得指出的是,您不需要服务器来运行Jenkins。它可以毫无问题地安装在您的本地机器上。

运行测试、解释和报告输出是构建服务器的主要目的之一——我强烈建议你不要尝试自己做这些,而只是接受现有的解决方案,特别是Jenkins(和TeamCity在某种程度上)是免费的。通常,它们很容易设置。

如果您真的不想这样做,那么我认为唯一的方法就是编写一个自定义程序来解析XML文件并检查相关的XML属性,计算失败次数。

我知道你不想投资建立一个构建服务器(虽然它不一定是一个服务器,可以只是你的本地机器),但是当你想要添加其他步骤到你的构建过程中会发生什么?您编写的用于检查测试输出的自定义程序将很快成为维护负担,它将分散您真正想做的事情-编写游戏代码!

还有一点试图说服你-学习如何设置构建服务器,如Jenkins,将在未来你开始其他项目或有技术面试的工作回报。

最新更新