我有一个参数化测试类,其中有大量的单元测试,通常控制着自定义电子邮件的创建。现在类有很多测试依赖于参数化类中使用的因素,测试的流程对于每个测试都是一样的。测试的例子:如果测试中的语句
@Test
public void testRecipientsCount() {
assertEquals(3, recipientsCount);
}
我不得不额外的funcionality增加,增加了一些额外的内部电子邮件收件人列表我的电子邮件类,这仅发生于某些案件,导致了我的问题。
可以说我想断言创建的消息数量。对于旧的测试,每种情况都是一样的,但现在它的不同取决于具体情况。对我来说,最直观的方法就是if语句添加:
@Test
public void testRecipientsCount(){
if(something) {
assertEquals(3, recipientsCount);
}
else {
assertEquals(4, recipientsCount);
}
}
...
,但我更有经验的同事说,我们应该避免在测试类IFS(我在这有点儿同意)。
我认为在两个测试分类上进行分割测试可能会有效,但这会导致两个分类中的冗余代码(我仍然需要检查是否创建了非本地消息,它们的大小,内容等)以及其中一个添加了几行。
我的问题是:如何做到这一点,所以我不使用if或冗余代码(不使用参数化类会产生更多冗余代码)?
'增加了一些额外的内部电子邮件到收件人名单“。这个内部地址列表是否被注入到类中?如果是这样,你只需擦除大部分测试的列表,并且有一个或两个'testInternalMail'测试来填充这个列表 – 2013-03-01 09:17:36
我认为这对于参数化测试类来说是不可能的。添加的测试用例可能会针对每组参数运行,并且对于某些参数的断言也会有所不同。你的解决方案可以在没有参数化类的情况下工作,但我有点想避免这种情况。 – Raidmaster 2013-03-01 09:42:14
您可以将您的发布代码更改为更完整(但仍然很小且假)的测试课程,以便我们了解如何设置您的参数? – 2013-03-02 00:39:03