在没有mstest.exe的情况下运行VSTS测试

时间:2009-10-14 07:02:05

标签: unit-testing nunit mstest

从我不了解的原因来看,我们所有的单元测试都使用VSTS测试框架。我现在想要创建一个运行测试的MSBuild脚本,但我不想因各种原因使用mstest.exe(速度较慢,需要在任何地方安装Visual Studio,我需要维护testrunco​​nfig等)。

我已经看到TestDriven.net和TeamCity能够在不使用mstest.exe的情况下运行VSTS测试'NUnit样式'。您是否了解执行此操作的任何独立命令行实用程序?

4 个答案:

答案 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

据说这听起来至少有一个人让它发挥作用:

Christoph De Baene - Running MSTest without Visual Studio

答案 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创建扩展以执行有用的任务。