我已经习惯了Eclipse for Java项目,每当我保存文件时它都会自动构建。 (我可以关掉它。)
然后我安装Infinitest,它会自动运行受保存更改影响的所有测试。
我是如何为Visual Studio编写的,编写C#软件?
VS 2017企业版支持Live Unit Testing功能。对于旧版本或更低版本,可以使用某些第三方提供商,例如Mighty Moose或NCrunch(其他第三方解决方案也几乎肯定存在)
如果您只关心C#/ .NET代码并且只想运行单元测试,那么此功能已经存在于Visual Studio 2017(仅限企业版)中,称为实时单元测试,请在此处阅读更多相关信息:https://docs.microsoft.com/en-us/visualstudio/test/live-unit-testing-intro?view=vs-2017
实时单元测试是Visual Studio 2017 15.3版中提供的一种技术,可在您进行代码更改时自动执行单元测试。
(我曾经是Microsoft在Visual Studio上工作的SDE(2012年,2013年和2015年)。我自己没有在构建管道上工作,但我希望我能提供一些见解:)
Visual Studio如何自动构建和测试代码?
它没有,在我看来,它不应该,假设“构建和测试代码”,你的意思是它应该执行标准的项目构建,然后运行测试。
Eclipse仅构建受更改影响的内容。奇迹般有效。
甚至增量构建也不是即时的,特别是如果有重要的后编译活动(例如复杂的链接和优化(甚至在调试模式下),外部构建任务(例如嵌入资源,可执行压缩,代码签名等)。
特别是在Eclipse中,这个功能并不完美。 Eclipse主要是一个Java IDE,在Java项目中,很有可能非常快速地执行增量构建,因为无论如何Java的构建时间非常快,而增量构建就像在Java .class
中交换嵌入式.jar
文件一样简单。在Visual Studio中,为了进行比较,.NET程序集的构建时间也很快 - 但不是那么简单,因为输出PE(.exe
/ .dll
)文件不像重建那么简单。
但是在其他项目类型中,尤其是C ++,构建时间要长得多,因此为C / C ++开发人员提供此功能是不合适的,事实上Eclipse自己的文档建议C / C ++用户关闭此功能:
默认情况下,Eclipse工作台配置为自动构建项目。但是,对于C / C ++开发,您应该禁用此选项,否则只要您将更改保存到makefile或源文件,就会重建整个项目。单击“项目”>“自动构建”,并确保“自动构建”菜单项旁边没有复选标记。
其他项目类型也不支持此功能,例如Eclipse的Go插件:
https://github.com/GoClipse/goclipse/releases/tag/v0.14.0
0.14.0的变化: [...]当工作空间“自动构建”设置已启用并保存文件时,不再调用项目构建器。 (这被认为是错误的)
(这个括号内容在GoClipse的更改列表中,当然也清楚说明了插件的作者对自动构建的看法)
然后我安装Infinitest,它会自动运行受保存更改影响的所有测试。
Visual Studio可以在构建后自动运行测试(但您仍然需要自己触发构建),这是一个内置功能,请参见此处:
https://docs.microsoft.com/en-us/visualstudio/test/run-unit-tests-with-test-explorer?view=vs-2017
要在每次本地构建后运行单元测试,请在标准菜单上选择“测试”,然后在“测试资源管理器”工具栏上选择“运行后运行测试”。
至于我为什么Visual Studio不支持Build-on-Save的原因:
.java
文件都将1对1映射到输出.class
文件,这使得增量构建非常快,因为只需要重建实际修改的文件,但其他项目如C#和C ++没有这种奢侈:如果你对C预处理器宏或C ++模板进行无关紧要的单字符编辑,你需要重新编译使用该模板的所有其他内容 - 然后是链接器和优化器(如果代码) -inlining)都必须重新运行 - 而不是一个快速的任务。C:\git\
或C:\Users\me\Documents\Visual Studio Projects
)它最好还是要求我每次直接允许这样做 - 特别是如果我想在做某事的时候做最后一次构建输出的事情。我不想首先将构建输出复制到安全目录。这也是“清洁项目”命令是独立的,而不是“构建项目”所暗示的原因。TRUNCATE TABLE CriticalSystemParameters
)并且构建中断(因为它们总是这样做),它可能会使你的系统处于不良状态。现在我承认一些项目类型的构建非常非常快,如TypeScript,Java和C#,而其他项目类型的源文件根本不需要编译和链接,只需运行验证工具(如PHP或JavaScript) - 并且Build-on-Save可能对那些人有用 - 但可以说,对于那些经验有所改善的人数有限,这显然会使其他用户恶化。
如果你真的想要build-on-save,那么编写Visual Studio的扩展(挂起“File Save”命令,然后在你的处理程序中调用Project Build命令)就足够了 - 或者养成按Ctrl键的习惯Ctrl + S后+ B :)