JUnit:测试注释和预期异常

时间:2016-03-22 13:32:11

标签: java intellij-idea junit

我试图使用JUnit进行测试,我很难理解我做错了什么。我做了一件非常简单的事情:

应该能够创造某种东西的类。到目前为止,我只是测试它得到的对象是否为空。

public class TestedClass {
    public void create(Object o) {
        if (o == null) {
            throw new IllegalArgumentException();
        } else {
            System.out.println("Not null!");
        }
    }
}

测试人员类,它创建一个新的TestedClass对象并尝试使用null创建一些东西。它期望IllegalArgumentException。

import org.junit.Test;
public class Tester {
    @Test(expected = IllegalArgumentException.class)
    public void createWithNullShouldThrowException() {
        TestedClass t = new TestedClass();
        t.create(null);
    }
}

只是主要课程。

public class Main {
    public static void main(String[] args) {
        Tester test = new Tester();
        test.createWithNullShouldThrowException();
        System.out.println("passed all tests!");
    }
}

我理解它的方式,如果在整个测试过程中抛出IllegalArgumentException,它应该正确终止。这是因为我的程序终止于:

Exception in thread "main" java.lang.IllegalArgumentException
    at TestedClass.create(TestedClass.java:4)
    at Tester.createWithNullShouldThrowException(Tester.java:6)
    at Main.main(Main.java:7)

哪个不应该发生,因为它应该被Tester类中的createWithNullShouldThrowException()方法捕获,或者我没有正确理解这个?我知道我可以用try catch块来做这件事,但我只是想知道在这种情况下出了什么问题。如果有任何帮助,我使用的是IntelliJ IDEA 16.1。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:4)

您不需要主类/方法。单元测试应通过单元测试运行器运行。 在Intellij Idea中,您可以右键单击带有@Test注释的类,然后单击“运行”菜单项或单击每个测试的小运行图标或单击测试文件夹的根目录并单击“运行所有测试”。

在maven项目中,如果测试位于正确的位置,您可以键入mvn test。其他构建工具将包含运行测试套件的方法。和其他IDE一样。

如果您想要main方法,那么您应该通过调用Google Maps来启动junit测试框架。但是,你实际上不太可能想要这样做。