有什么方法可以创建一个将值返回给另一个方法的 JUnit 测试吗?我意识到它应该是 void 返回类型,但我希望有另一种方法 - 通过 Jmeter,在将 JSON 字符串返回给 JMeter 之前自动运行测试。
@RequestMapping(value = "/testGetPlayer", produces = "application/json",
method = RequestMethod.POST)
@ResponseBody
public Response getPlayer(final HttpServletRequest req){
this.response = new Response();
String newPlayer = req.getParameter("player");
this.response = pServ.checkPlayer(newPlayer);
if(this.testGetPlayer()){
System.out.println("woohoo");
}
//assert that incoming response string will
//contain "created player" or somesuch
return response;
}
@Test
public void testGetPlayer(){
for(String m : response.getMessages()){
if(m.equals("PLS_M001: Player does not exist")){
assertTrue(m.equals("PLS_M001: Player does not exist"));
}
else{
assertTrue(m.equals("PLS_M002: Player exists"));
}
}
}
我想要这样的东西:
@Test
public boolean testGetPlayer(){
boolean allgood = false;
for(String m : response.getMessages()){
if(m.equals("PLS_M001: Player does not exist")){
assertTrue(m.equals("PLS_M001: Player does not exist"));
allgood = true;
}
else{
assertTrue(m.equals("PLS_M002: Player exists"));
allgood = true;
}
}
return allgood;
}
很抱歉,如果这是一个明显的禁忌,但我仍在学习 Junit 和 Jmeter,想看看我能把它们推进到什么程度。
谢谢
最佳答案
基于预期,断言通常应该用于显示失败的测试。一个测试应该总是期望一个特定的结果,所以理想情况下你当前的测试会变成两个:
testGetPlayerSucceeds() (asserts that player exists after call)
testGetPlayerFails() (asserts that player does not exist after call)
通常在断言抛出后继续测试是没有意义的,除非断言其他条件,因为您处于未知状态并且测试已经失败。
但是,有时总是有理由做不同的事情,所以...
junit 测试方法是无效的,所以更改签名不太合适。这个想法是一个框架为你运行它们,所以不需要返回类型。如果您不需要使用 junit 框架,您可以删除注释并根据需要调用测试。
我假设您正在尝试通过调用 junit 测试方法来构建测试套件,并且需要对先前测试的结果采取行动...
断言是一种异常,您可以在调用方法中捕获它,设置标志(或采取相应行动),然后重新抛出断言。
Boolean allGood = false;
try {
testGetPlayer()
} catch (AssertionError a) {
if (a.getMessage == "PLS_M002: Player exists") allGood = true;
throw(a);
}
关于java - 有没有办法覆盖 JUnit 以将响应发送回另一个方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18602415/