当这些状态是内部属性时,如何使用单元测试创​​建测试状态?

时间:2012-07-30 16:15:44

标签: c# .net unit-testing

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

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

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

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

有什么建议吗?

1 个答案:

答案 0 :(得分:3)

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

这紧密地结合了你的测试和“真正的”装配,但这应该让你工作。