单元测试,构建配置和内部

本文关键字:内部 配置 构建 单元测试 | 更新日期: 2023-09-27 18:07:33

我在一个独立的项目中编写我的UnitTests。为了能够测试Internal类/成员,我在我的Project Under test中使用[InternalsVisibleTo]属性。

#if "BUILD_CONFIGURATION"
[assembly: InternalsVisibleTo("Tests_ProjectUnderTest")]
#endif

出现以下问题:

我应该为单元测试使用哪个构建配置?Internal s不应该在我发布的代码中可见,所以#if RELEASE是不可能的。另一方面,#if DEBUG并没有真正测试我想要发布的内容。您应该有一个不同的UNIT_TEST -配置吗?或者你会怎么做?

单元测试,构建配置和内部

我通常不设置[InternalsVisibleTo()]属性是有条件的,因为内部结构只对命名程序集可见。您可以通过强命名程序集来增强安全性,这样就没有人可以"伪造"您的单元测试程序集。然而,如果您关心这个问题,那么无论如何都应该混淆您的程序集,否则逆向工程是微不足道的。我通常认为private/internal是一种意图声明,而不是一种安全特性,因为它总是可以通过反射来规避。

我通常对调试配置进行单元测试,因为我想在单元测试结果中看到诊断输出。这可能取决于您使用的运行程序,我使用ReSharper运行程序,它将调试/跟踪输出捕获到单元测试窗口中。由于在我的发布版本中跟踪的冗长性减少了,所以我更喜欢对调试版本进行单元测试。我认为这是一个主观判断。