【问题标题】:Unit Tests, Build Configuration and Internals单元测试、构建配置和内部结构
【发布时间】:2015-08-13 08:49:58
【问题描述】:

我正在与我的被测项目分开的项目中编写我的单元测试。为了能够测试Internal 类/成员,我在我的被测项目中使用了[InternalsVisibleTo] 属性。

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

出现以下问题:

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

【问题讨论】:

  • 只要一直保留InternalsVisibleTo 属性。归根结底,如果人们想了解您的内部情况,无论如何他们都可以通过反思来做到这一点。

标签: c# unit-testing buildconfiguration


【解决方案1】:

我通常不会将[InternalsVisibleTo()] 属性设置为有条件的,因为内部结构只对命名的程序集可见。您可以通过强命名程序集来增强其安全性,因此没有人可以“伪造”您的单元测试程序集。但是,如果您那么对此感到担忧,那么无论如何您都应该混淆您的程序集,否则逆向工程是微不足道的。我通常认为私有/内部是一种意图声明而不是安全功能,因为它总是可以使用反射来规避。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-11-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多