我有一个带有大量单元测试的参数化测试类,这些单元测试通常控制自定义电子邮件的创建。现在班级有很多测试取决于参数化班级中使用的因素,每个测试的测试流程都是相同的。一个测试的例子:
@Test
public void testRecipientsCount() {
assertEquals(3, recipientsCount);
}
我必须在我的电子邮件类中添加额外的功能,将一些额外的内部电子邮件添加到收件人列表中,而这只发生在某些情况下,这会导致我的问题。
假设我想断言创建的消息数量。对于旧测试,每种情况都相同,但现在根据情况不同。对我来说最直观的方法是添加 if 语句:
@Test
public void testRecipientsCount(){
if(something) {
assertEquals(3, recipientsCount);
}
else {
assertEquals(4, recipientsCount);
}
}
...
但我更有经验的同事说我们应该避免在测试课程中使用 ifs(我有点同意这一点)。
我认为对两个测试类进行拆分测试可能会起作用,但这会导致两个类中的代码冗余(我仍然必须检查是否创建了非内部消息、它们的大小、内容等),并添加了几行其中之一。
我的问题是:我该怎么做才能不使用 if 或大量冗余代码(不使用参数化类会产生更多冗余代码)?