有没有办法创建一个将值返回给另一个方法的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,并希望看到我能推动它们到底有多远。
由于
答案 0 :(得分:0)
断言通常应用于根据预期显示失败的测试。测试应该总是期望一定的结果,所以理想情况下你当前的测试会变成两个:
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);
}