C# 在发布模式下运行NUnit测试

C# 在发布模式下运行NUnit测试,c#,visual-studio,unit-testing,nunit,C#,Visual Studio,Unit Testing,Nunit,我有个问题 #if DEBUG ca.ConveyancingAttorneyID = "C0B68DC3-C396-4264-880B-1A699C53A8CE"; ca.ConveyancingFirmID = "C0B68DC3-C396-4264-880B-1A699C53A8CE"; #endif 当我们在调试模式下运行时,我们硬编码标识符。在发行版中,它显然是动态设置的 现在,当涉及到映射代码的单元测试时,我必

我有个问题

#if DEBUG
        ca.ConveyancingAttorneyID = "C0B68DC3-C396-4264-880B-1A699C53A8CE";
        ca.ConveyancingFirmID = "C0B68DC3-C396-4264-880B-1A699C53A8CE";
#endif
当我们在调试模式下运行时,我们硬编码标识符。在发行版中,它显然是动态设置的

现在,当涉及到映射代码的单元测试时,我必须这样做:(最初我只是测试了“发布案例”,然后在调试模式下总是失败)

这并不理想。而且必须记住(并提醒队友)在发布版中始终运行单元测试也是一件麻烦事。我们没有持续集成设置,因此测试只在本地运行


有没有办法强制NUnit/Visual Studio Testrunner/Resharper Testrunner始终在发布模式下运行测试?或者有没有更好的方法来实现这一点,请记住这些“如果调试”代码块在解决方案中非常丰富。

如果必须运行Release,请使用argument/config:Release

我不确定我们对项目结构的了解是否足够,以适当的方式回答这个问题。这基本上取决于您在何处以及如何使用这些值

理想情况下,您应该通过接口从某处获取这些ID。这将允许您伪造并切换该接口后面的实现,允许您在需要测试使用值的逻辑时返回硬编码的伪值

您可以设置一个配置选项,允许您指定是使用实际实现,还是使用虚拟数据提供程序来允许切换而无需重新编译

更新:由于上述内容对您的特定问题并不是很好的答案,下面是另一个尝试:在
Resharper>Options>Tools>unittesting
下,有一个选项runtests from:,您可以指定要使用的文件夹,而不是默认的项目输出文件夹


这可能需要很长时间,但也许您可以配置VS以将项目的发布版本构建到某个特定文件夹,并参考该版本进行测试,即使主项目构建配置设置为Debug

记住在使用参数时区分大小写很重要,例如/config:Release from Xeon的答案,否则您将得到一个误导性错误:

Invalid : Path_to_your_file
File type is not supported error

(声誉不足,无法发表评论)

我们没有持续集成设置,因此测试只在本地运行。
-这似乎是根本问题。请告诉我。在我加入之前,没有单元测试。@JohanVenter
#if DEBUG
Assert.Fail(“…”
#endif
)?是的,针对接口编码,也许使用Unity之类的东西可以很好地替换“假”实现。不幸的是,这将是一个相当麻烦的介绍到这个项目。也许我会尝试像你说的那样将构建的DLL发送到一个文件夹。从可维护性的角度来看,这本身可能是一种痛苦?不知道如何保持引用同步?将此标记为答案,提供多个选项。可能只是抽象了一个配置设置,我可以在单元测试时强制“释放”。谢谢
Invalid : Path_to_your_file
File type is not supported error