[英]Run NUnit tests in release mode
我有个问题。
#if DEBUG
ca.ConveyancingAttorneyID = "C0B68DC3-C396-4264-880B-1A699C53A8CE";
ca.ConveyancingFirmID = "C0B68DC3-C396-4264-880B-1A699C53A8CE";
#endif
在调试模式下运行时,我们对标识符进行硬编码。 在发行版中,显然是动态设置的。
现在,当涉及到对映射代码进行单元测试时,我必须这样做:(最初我只是测试了“发布案例”,然后在调试模式下总是失败了)
#if RELEASE
Guid id = new Guid("1A92CE5A-D956-486B-9B65-0A3630EF0285");
#endif
#if DEBUG
Guid id = new Guid("C0B68DC3-C396-4264-880B-1A699C53A8CE");
#endif
这是不理想的。 而且必须记住(并提醒队友)始终在发布中运行单元测试也很麻烦。 我们没有持续的集成设置,因此测试仅在本地运行。
有没有一种方法可以强制NUnit / Visual Studio Testrunner / Resharper Testrunner始终以发布模式运行测试? 还是有更好的方法来解决此问题,请记住,解决方案中这类“ #if DEBUG”代码块非常丰富。
如果必须运行Release,请使用参数/ config:Release
我不确定我们对您的项目的结构是否足够了解,无法以适当的方式回答这个问题。 它基本上取决于您在哪里以及如何使用这些值。
理想情况下,您应该通过接口从某个地方获取这些ID。 这样一来,您就可以伪造并在该接口后面切换实现,从而可以在需要测试使用值的逻辑时返回硬编码的伪值。
您可以设置配置选项,以指定是使用实际实现,还是设置虚拟数据提供程序以允许进行切换而无需重新编译。
更新:由于上述内容并不是您对特定问题的真正答案,因此,这是另一种尝试:在Resharper > Options > Tools > Unit Testing
,有一个选项Run tests from Resharper > Options > Tools > Unit Testing
您可以在其中指定要使用的文件夹,而不是默认项目输出文件夹。
这可能需要很长时间,但是即使主项目构建配置设置为Debug,也可以配置VS将项目的Release版本构建到某个特定的文件夹,并参考该版本进行测试。
请记住,在使用参数(例如/ config:Xeon的答案中的版本)时,区分大小写很重要,否则会产生误导性错误:
Invalid : Path_to_your_file
File type is not supported error
(信誉不足,无法发表评论)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.