在没有服务器连接的情况下,JUnit测试如何在一开始就在TestSuite中返回成功?

时间:2018-08-14 11:12:44

标签: junit cmd test-suite

我进行了一些jUnit测试,并制作了.bat文件以从cmd运行它们。

用于运行单个测试的蝙蝠文件:

CLS
java -cp ".;junit.jar;bin;lib/*" org.junit.runner.JUnitCore test.dss.TestExecute
pause

运行两个具有多个测试的测试套件的蝙蝠文件:

CLS
java -cp "lib/*;bin" org.junit.runner.JUnitCore test.dss.AllTests test.mw.AllTests
pause

为此,我制作了一个属性文件,可以通过连接测试在其中找到有关服务器路径的信息。

属性文件:

mwDSS=http\://localhost\:8080/rest/mw

简单的JUnit测试:

public class TestLogin {

private static String path = "";
private static String userName = "";
private static String userPassword = "";
private static ResteasyClient client = null;
private static ResteasyWebTarget rtarget = null;
private static DssRest rest = null;

public TestLogin() {
    try {
        Properties props = new Properties();
        Reader in = new InputStreamReader(TestLogin.class.getClassLoader().getResourceAsStream("Test.properties"));
        props.load(in);
        in.close();
        path = props.getProperty("mwDSS"); // <-------here is the servers path
        userName = props.getProperty("userName");
        userPassword = props.getProperty("userPassword");
        client = new ResteasyClientBuilder().build();
        rtarget = client.target(path);
        rest = rtarget.proxy(DssRest.class);
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }
}

@Test
public void testOK() {

    User user = rest.login(userName, userPassword);
    if (user != null) {
        assert(true);
        System.out.println("DSS - SUCCESS - Test Login (DSS) - testOK - Was successful.");
    } else {
        System.err.println("DSS - ERROR -  Login (DSS) - testOK - Was unsuccessful.");
        assert(false);
    }
}

@Test
public void testNO() {
    User user = rest.login("xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx");
    assert(user == null);
    if (user == null) {
        assert(true);
        System.out.println("DSS - SUCCESS - Test Login - testNO - Was successful.");
    } else {
        System.err.println("DSS - ERROR - Test Login - testNO - Was unsuccessful.");
        assert(false);
    }
}

}

一次,我更改了路径(换句话说,使测试无法找到服务器),并使用批处理文件从CMD运行测试,控制台的输出看起来就像开始执行测试一样,并且仅打印最后几行(最后一行是:Test Success),因此没有其他消息(即使运行成功也有很多INFO消息)或警报之类的东西,只有最后几行等等仅位于测试套件的顶部,可以同时运行多个测试。

参见下图: enter image description here

除了测试外,输出前面还有.E符号(一次或多次),我不知道它们是什么意思。

过一会儿(它会随着运行而变化),所有测试中的消息都会按应有的方式抛出错误消息(无法连接),但不是立即发出,我担心最终用户可能会误解第一个成功的讯息。

一旦我运行了一个测试,那么如果没有测试套件,该错误消息将立即出现,并且没有问题。

顺便说一句。错误消息会在每个单独的错误消息中按原样显示在调用任何REST函数的第一行。

那么,如何使丢失的服务器中的错误消息立即显示,而不是过一会儿?

请帮助。

谢谢。

0 个答案:

没有答案