在某些环境下,比如处理特殊的数据类型,或处理对多个测试都共享的一系列操作,可以使用自定义断言。比如在测试一个经济方面的程序并且事实上所有的测试都使用了名为Money的数据类型,可以不直接从TestCase继承,而自己创建一个项目特有的基础测试类。
事实上,开始新项目时总是从自己的自定义基类继承而不直接从JUnit的类继承通常是一个好主意——即便一开始在基类中没有添加任何额外的功能。这样做的好处是,一旦以后需要添加一个所有测试类都需要的方法或者能力时,可以简单地修改基类而不需要改动项目中所有的test case。
import
junit.framework.TestCase;
public class ProjectTest extends TestCase ... {
public void assertEvenDollars(String message, Money amount) ...{
assertEquals(message, amount.asDouble() - (int)amount.asDouble(), 0.0, 0.001);
}
public void assertEvenDollars(Money amount) ...{
assertEvenDollars("", amount); // 不要拷贝和粘贴共有代码
}
}
public class ProjectTest extends TestCase ... {
public void assertEvenDollars(String message, Money amount) ...{
assertEquals(message, amount.asDouble() - (int)amount.asDouble(), 0.0, 0.001);
}
public void assertEvenDollars(Money amount) ...{
assertEvenDollars("", amount); // 不要拷贝和粘贴共有代码
}
}