对于回归测试(非单元测试),我们在TestNG中编写了精心设计的场景,是否应该进行Assert检查?是否在测试用例或调用方法中是否重要?例如:
此测试用例调用包含断言的验证方法:
@Test
public void test1() {
validateResponse();
}
public void validateResponse() {
Assert.assertEquals(a, "123");
Assert.assertEquals(b, "455");
Assert.assertEquals(c, "5678");
Assert.assertEquals(d, "3333");
}
此测试用例根据验证方法的返回值进行断言:
@Test
public void test1() {
Assert.assertTrue(validateResponse());
}
public boolean void validateResponse() throws Exception {
try {
if (!a.equals("123")) throw new Exception();
if (!b.equals("455")) throw new Exception();
if (!c.equals("5678")) throw new Exception();
if (!d.equals("3333")) throw new Exception();
} catch (Exception e) {
e.printStackTrace();
return false;
}
return true;
}
答案 0 :(得分:2)
您的断言应该尽可能具体和细化,以帮助开发人员快速识别问题。 e.g。
@Test
public void testResponseFields(){
// create response to be tested
// JUnit style
Assert.assertEquals("Response 'alpha' should be '123'", 123, response.getAlpha());
// TestNG style
Assert.assertEquals(response.getAlpha(), 123, "Response 'alpha' should be '123'");
}
在Assert.assertXX调用中设置失败消息之后,调用Assert的位置变得更加荒谬,因为您将有一条消息来解释问题,而堆栈跟踪则可以查看失败的位置和时间