繁体   English   中英

快速JUnit类测试测试未失败

[英]Quick JUnit Class Test tests not failed

我是JUnit Testing的新手,我需要为学生运动测试我的类。 我想测试吸气剂是否与正确的Student对象一起使用。 我还想测试是否有抛出异常,当我给构造函数指定名称为“”的空字符串时,以及当我给出否定的“ 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());
        }
    }

我不确定您是否在此处使用了正确的批注,因为如果您在测试方法中捕获到异常,它应该总是失败,因为该异常不会在预期的地方脱离测试。 另外,还有一个不错的方法Assert.fail(“ some message”),您可以在构造函数调用之后使用它,而不用使用sysout。

另一方面,您应该知道,当您传入一个空字符串文字(“”)时,它不是null,因此它不应以nullpointer异常结尾(除非有些逻辑不是与我们共享)。

另外,在构造函数内部,您应该检查参数值并验证它们。 如果有任何值使该对象无效,则应引发另一种RuntimeException,因为引发nullpointer异常是一种不好的做法,因为运行时将“为您完成”。 捕获它们也是一个坏习惯,因为像任何其他运行时异常一样,您可以在导致空指针的事件实际发生之前对其进行验证。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM