我正在尝试为我的方法创建一些JUnit测试,并且我被告知要为每个方法执行此操作。我知道初学者只做正面测试是一个陷阱,那么我怎么能比现有的更多地测试这种方法呢?我的两种测试方法基本上都测试了同样的东西。什么是负面测试的例子或多余的工作?
@Component({
selector: 'relative-path',
template: require('view.html')
})
public static MemberCont getInstance() {
if(instance == null) {
instance = new MemberCont();
}
return instance;
}
答案 0 :(得分:2)
你显然试图实现Singleton Pattern
(没有正确编写BTW,请检查this),所以要测试的最重要的事情是你总是获得完全相同的实例,所以你的测试应该是这样的:
@Test
public void getInstance() {
assertNotNull(MemberCont.getInstance());
// Make sure that we get the same instance between 2 subsequent calls
assertSame(MemberCont.getInstance(), MemberCont.getInstance());
}
NB:这是static
方法,因此您无需使用实例来调用它,只需像上面那样直接使用类名调用它。
答案 1 :(得分:0)
UnitTests应始终代表其结构,分为3部分:安排,代理和断言。此外,每个所需的行为都应该有自己的测试。所以你的测试应该看起来很敏感(根据@NicolasFilotto的回答):
@Test
public void getInstance__singleCall__NotNull() {
// no "arrange" possible
// act
MemberCont cut = MemberCont.getInstance();
// assert
assertNotNull(cut);
}
@Test
public void getInstance__multipleCalls__alwaysTheSameObject() {
// no "arrange possible
MemberCont cut1 = MemberCont.getInstance();
MemberCont cut2 = MemberCont.getInstance();
assertTrue(cut1 == cut2);
}