【发布时间】:2013-11-15 04:58:08
【问题描述】:
我有一个执行各种功能的函数类(我知道,这很令人震惊)。 一个这样的功能是返回给定年份的公共假期列表。 每个计算都有自己的私有函数,因此公共函数实际上只是将各种假期编译成一个列表。
现在我想对此运行一些测试,显然我无法在私有方法上运行测试,所以我在 TestInitialize 方法中拉出列表,然后使用它进行各种测试。
问题是,假设我用list.SingleOrDefault(p => p.HolidayName.Equals("New Year's Day")) 之类的东西退出元旦,那么最好在运行预期的测试之前检查它是否为空(它应该在工作日,据我所知tell 本身就是两个断言...)。
所以,我想有两个问题。
1. 这种情况是每个单元测试1个断言规则的例外吗?还是我需要将空断言和周末断言分开?
2. 据我所知,将有两个断言来确保它不是在周末;一个检查星期几是否不等于星期六,一个检查星期几是否不等于星期日。还是我错了?
【问题讨论】:
-
为什么不能只测试公共方法?如果它们正常工作,则可以假设它们调用的私有方法正常工作。没有?
-
我可以的。我仍然有从列表中拉出每个公共假期并检查它是否不为空且正确的问题。
-
也许是我。争论是否应该在这里或那里检查 null 似乎很挑剔。只要你验证数据真的很重要吗?至于问题 #2 是的,如果您担心域溢出,请务必这样做。换句话说,如果您正在测试
int,那么 1 + 1 = 2 就足够了。 2 + 2 = 4 是不必要的,因为它测试的是同一个域。其他仍需要测试的域是负号和大号。
标签: c# unit-testing