2015-08-13 25 views
0

我正在写我的UnitTests在一个单独的项目从我的项目在测试。为了能够测试Internal类/成员,我在我的项目中使用了[InternalsVisibleTo]属性。单元测试,构建配置和内部

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

以下问题出现了:

我应该使用

哪个构建配置单元测试? Internal不应该在我的发布代码中可见,所以#if RELEASE是不可能的。另一方面#if DEBUG并不真正测试我想要发布的内容。 你应该有一个独特的UNIT_TEST - 配置?或者你会如何做到这一点?

+4

只需在这里留下'InternalsVisibleTo'属性。在一天结束的时候,如果人们想要了解你的内部,他们可以通过反思来完成。 –

回答

0

我通常不会使[InternalsVisibleTo()]属性成为有条件的,因为内部元素只能对指定程序集可见。你可以通过强大的命名组件来增强安全性,所以没有人可以“伪装”你的单元测试程序集。但是,如果你担心这个问题,你应该可能会混淆你的程序集,否则逆向工程是微不足道的。我通常认为私人/内部是一种意图声明而不是安全特征,因为它总是可以通过反思来绕过。

我通常会对我的调试配置进行单元测试,因为我想在我的单元测试结果中看到诊断输出。这可能取决于您使用的是哪一个跑步者,我使用ReSharper跑步者,并将调试/追踪输出捕获到单元测试窗口中。由于在发布版本中跟踪详细程度降低了,所以我更愿意单元测试调试版本。不过,我认为这是一个判断。