我有Mappa类,子类MappaFermi和属性mappaName(从枚举中选择)。
我正在尝试用构造函数MappaFermi()编写一个测试,但我似乎无法正确编写它。
public class Mappa {
private Name mappaName;
public Mappa (Name mappaName){
this.mappaName=mappaName;
...
}
}
public class MappaFermi extends Mappa {
public MappaFermi(Name mappaName) {
super(mappaName);
}
}
public enum Name {
FERMI, GALILEI, GALVANI
}
我已经尝试了eclipse提供的所有建议但仍然出错。
public class MappaFermiTest {
@Test
public void testMappaFermi() {
Mappa mappa = new MappaFermi(Name.FERMI);
assertNotNull(mappa);
}
@Test
public void testMappaFermi() {
Mappa mappa = new MappaFermi();
assertNotNull(mappa);
}
}
答案 0 :(得分:0)
如果要使用new MappaFermi()
,则必须定义无参数构造函数。这是默认构造函数,任何没有其他构造函数的类都将隐式具有no-arg构造函数。但是一旦你定义了一个带有参数的构造函数,比如Mappa(Name mappaName)
,no-arg默认构造函数就不再可用,必须明确定义。
public MappaFermi() {
super(null); // or whatever is a good 'default' name
}
此外,在assertNotNull(mappa);
之后立即测试Mappa mappa = new MappaFermi(whatever);
毫无意义,因为此时无法可能是null
。
答案 1 :(得分:0)
这里有一些错误:
- 具有相同名称testMappaFermi
的三种方法
测试可以在一个方法中完成,或者如果您真的需要三种方法,则可以重命名方法。
- 第二次测试编写不正确。什么会起作用:
Name mappaName = Name.FERMI;
Mappa mappa = new MappaFermi(mappaName);
- 第三个测试使用new MappaFermi()
而没有定义无参数构造函数
要么在构造函数中放置一个参数,要么编写一个无参数的构造函数:
public MappaFermi() {
super(Name.FERMI);
}