从我不了解的原因来看,我们所有的单元测试都使用VSTS测试框架。我现在想要创建一个运行测试的MSBuild脚本,但我不想因各种原因使用mstest.exe(速度较慢,需要在任何地方安装Visual Studio,我需要维护testrunconfig等)。
我已经看到TestDriven.net和TeamCity能够在不使用mstest.exe的情况下运行VSTS测试'NUnit样式'。您是否了解执行此操作的任何独立命令行实用程序?
答案 0 :(得分:20)
如果您使用识别MS测试属性(TestClass等)的特殊NUnit Addin,您可以在NUnit中执行Team System Tests(MSTest)。
Exact Magic Software有open-source "test-adapter"可以做到这一点。
更新:我为NUnit 2.5.2重写了Exact Magic的Msts NUnit适配器。
答案 1 :(得分:1)
看起来TeamCity只是利用Gallio来运行VS测试。 Gallio似乎有msbuild集成并且听起来很完美,但经过仔细研究后,似乎需要像MSTest一样安装VS,因为它似乎依赖于MS exes:
The plugin enable condition was not satisfied: '${process:DEVENV.EXE} or
${process:VSTESTHOST.EXE} or
${process:QTAGENT.EXE} or
${process:QTAGENT32.EXE} or
${process:QTDCAGENT.EXE} or
${process:QTDCAGENT32.EXE}'.
Host process exited with code: 0
据说这听起来至少有一个人让它发挥作用:
答案 2 :(得分:0)
可以在不安装Visual Studio的情况下运行MSTests。请参阅how-do-i-use-mstest-without-visual-studio。
我这样做是为了让我可以将测试作为CI过程的一部分。 (我使用CC.NET作为我的CI解决方案)。
我和你的情况类似,因为我想使用TestDriven.NET来获取代码覆盖率统计数据。但是,我遇到了问题。我的第一个问题是我使用AssemblyInitialize
属性来初始化数据库连接。 NUnit不支持这一点,因此大约一半的测试失败了,而它们在MSTest下运行正常。
因此,将测试从一个测试框架转换到另一个测试框架似乎存在缺陷。如果你意识到这一点,那就去吧,但尝试在一个测试框架上保持一致可能会更好。
答案 3 :(得分:0)
我们在Cruise Control服务器上使用msbuild TestToolsTask运行VSTS测试。这不使用MSTEST可执行文件 - 您要求的条件 - 但确实使用了各种TFS依赖项。
请注意,我们正在从NSTit的VSTS测试框架迁移测试,主要是因为我们可以为NUnit创建扩展以执行有用的任务。