【发布时间】:2019-07-21 13:47:42
【问题描述】:
我是 JUnit 测试的新手,我需要测试我的一门学生练习。我想测试吸气剂是否与正确的学生对象一起工作。当我给构造函数时,我还想测试是否抛出异常,例如名称“”的空字符串以及当我给出否定的“Matrikelnummer”时。
我编写的测试应该检测到没有为负的 Matrikelnummer 抛出异常,但不知何故,测试总是通过。
空字符串的测试也总是通过,即使在控制台中打印出异常消息也是如此。
我该怎么做?我正在使用 JUnit 4.7。 感谢您的帮助。
package Model;
public class Student extends Person
{
private int Matrikelnummer;
private Studiengruppe studiengruppe;
public Student(String name, String vorname, int matrikelnr, Studiengruppe studiengruppe)
{
super(name, vorname);
this.Matrikelnummer = matrikelnr;
this.studiengruppe = studiengruppe;
}
public Student(String name, String vorname, int matrikelnr, Studiengruppe studiengruppe,
String strasse, String hausnummer, String ort, int plz)
{
super(name, vorname, strasse, hausnummer, ort, plz);
this.Matrikelnummer = matrikelnr;
this.studiengruppe = studiengruppe;
}
public int getMatrikelnummer() {
return Matrikelnummer;
}
public Studiengruppe getStudiengruppe()
{
return studiengruppe;
}
}
这个测试例如即使字符串不是 "" 也会传递:
@Test(expected = NullPointerException.class) //Test der Nullpointerexception
public void test2() {
try {
System.out.println("Test 2");
Student stud = new Student("", "Luca", 6541817, Studiengruppe.IB3A);
System.out.println("Fail, Exception not thrown");
}
catch(NullPointerException ex)
{
System.out.println(ex.getMessage());
}
}
【问题讨论】:
-
你需要在构造函数中编写该逻辑,不会自动发生某些事情
-
你能添加测试类的包导入部分吗?你确定这个测试真的运行了吗?此外,编写期望空指针异常的逻辑也不是一个好习惯。你应该检查条件并抛出更有意义的东西,比如 IllegalArgumentException 等。