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

时间:2015-08-13 08:49:58

标签: c# unit-testing buildconfiguration

我正在从我的测试项目中的单独项目中编写我的UnitTests。为了能够测试Internal类/成员,我在我的测试项目中使用了[InternalsVisibleTo]属性。

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

出现以下问题:

我应该使用哪种构建配置进行单元测试?我发布的代码中不应显示Internal,因此#if RELEASE无法使用#if DEBUG。另一方面,UNIT_TEST并没有真正测试我想要发布的内容。 你应该有一个独特的Map<File, ByteArray> filelist = new HashMap<File, ByteArray>(); // add files here for(Map.Entry<File, ByteArray> e: filelist) { FileInputStream fi = FileUtils.openInputStream(e.getKey()); byte[] digest = DigestUtils.sha1(fi); // save digest to a new map, list, etc. or just compare it to any previous state. e.getValue().equals(new ByteArray(digest)); } - 配置吗?或者你会怎么做?

1 个答案:

答案 0 :(得分:0)

我通常不会使[InternalsVisibleTo()]属性成为条件,因为内部只会对命名程序集可见。您可以通过强化命名程序集来增强其安全性,因此没有人可以“伪造”您的单元测试程序集。但是,如果您 关注此问题,那么您可能应该对程序集进行模糊处理,否则逆向工程很简单。我一般认为私人/内部是意图声明而不是安全特征,因为它总是可以通过反射来规避。

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