我进行了一些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消息)或警报之类的东西,只有最后几行等等仅位于测试套件的顶部,可以同时运行多个测试。
除了测试外,输出前面还有.E符号(一次或多次),我不知道它们是什么意思。
过一会儿(它会随着运行而变化),所有测试中的消息都会按应有的方式抛出错误消息(无法连接),但不是立即发出,我担心最终用户可能会误解第一个成功的讯息。
一旦我运行了一个测试,那么如果没有测试套件,该错误消息将立即出现,并且没有问题。
顺便说一句。错误消息会在每个单独的错误消息中按原样显示在调用任何REST函数的第一行。
那么,如何使丢失的服务器中的错误消息立即显示,而不是过一会儿?
请帮助。
谢谢。