1

我有一个单独的类库,用于所有单元测试(使用 nunit)。在测试项目中,我有一个帮助类为我创建测试对象。在设置这些对象时,我需要设置一些我标记为内部的值。我这样做的原因是因为这些对象实际上是工作流程的一部分,所以我只能通过实际执行工作流程来实现这些属性状态,这会扼杀单元测试的想法。

例如,我首先测试的方法。它检查是否获得了某个批准,如果是,则将其移动到链中的下一步(或者更确切地说,它检查是否收到了下一个批准,依此类推)。如果没有,它会将其重新分配给需要批准的人。

所以我要做的是创建一个处于此过程某个阶段的测试票。例如,第一个测试运行第一个批准者未批准的方法,并检查以确保它被重新分配给该人。下一个测试将在批准者批准的地方运行它,并确保它沿着树向下移动。

我明显面临的问题是测试类位于不同的命名空间中,因此我无法访问内部属性。我不确定是否有解决此问题的方法,或者我是否缺少其他一些支持我进入这个角落的基本原理(设计气味?)。我意识到您通常只想为公共 api 编写测试,但我的部分测试要求我对私有字段进行一些设置。

有什么建议么?

4

1 回答 1

3

您可以使用InternalsVisibleTo属性来指定您的 UnitTest 程序集可以访问该类的内部属性。

这将您的测试和“真实”组装紧密结合,但这应该让您工作。

于 2012-07-30T16:21:55.020 回答