与Visual Studio分开运行MsTest



我正在寻找一个命令行或GUI工具,它可以将更改后的程序集从解决方案复制到一个单独的文件夹中,这样之后的新构建就不会影响测试运行。之后,它应该执行一组可配置的测试(只有特定的程序集,并过滤特定的TestCategories)。完成后,应显示测试结果。

有没有一个工具或一套工具可以完成这些任务?MsTest.exe可以运行测试,但不能复制所有必需的程序集。

将MsTest命令行工具(或visual studio运行程序)与构建后步骤结合使用以在本地复制程序集是不好的,因为这会减慢每次构建的速度,但我不会在每次构建解决方案时都在本地运行测试。我可以写一个小脚本,预先在本地复制必要的程序集。但我所希望的是一个不用写剧本就能完成这一切的工具。

复制文件

要从命令行复制程序集,可以使用标准复制命令。只复制"更改的"程序集比较困难,除非您正在进行增量生成。

xcopy,copy就足够了。

MsBuild是您可以用来复制文件的另一个工具。您可以创建不在Visual Studio中运行的生成后事件或自定义目标。它只会在您设置特定条件或从命令行显式调用目标时运行。

方便的事实是MsBuild至少知道构建文件需要哪些文件。请注意,MsBuild现在可能确切地知道运行测试需要什么。某些配置文件和第三方引用的依赖关系可能也需要,但不是项目的一部分。

我不知道还有其他工具。我个人会选择写一个简单的脚本,因为它并不难做和维护。

运行测试

有一个命令行vstest.console.exe,它将愉快地运行基于MsTest的测试。

语法如下:

vstest.console.exe /TestCaseFilter:[ expression ] assemblyone.dll assembly2.dll

注1

每次运行MsBuild生成程序集以生成项目时,即使生成的所有MSIL都相同,程序集也会不同,因为编译器会为文件分配一个新的唯一GUID。

因此,除非您的构建是增量的,并且检测到没有必要从一开始就实际构建文件,否则它每次都会生成唯一的文件。

注2

事实上,正如其他提到的,像tfsbuild或teamcity这样的持续集成工具可以帮助您构建和运行测试,并为您创建一个好的报告。

更高级的工具,如ms发布管理或octopus部署,可以在进行连续交付或更好的连续部署时,在部署工作流中运行测试。

我认为您正在描述一个团队集成系统。

您可以使用MS Team Build或visualstudio.com.的在线版本

另一个流行的选择是TeamCity

这两者都允许您配置它们,以便它们触发运行测试的构建(或基于类别的测试子集)。如果构建失败或测试失败,您可以选择对此做出反应(例如拒绝签入)

最新更新