我的问题是在Adobe cq5中进行集成测试的JUnitServlet。当它运行测试时,如果测试方法中有错误,它只显示来自他身边的错误消息。我们如何才能看到我们在测试方法断言中写入的消息。
例如:
如果我在测试方法中有几个“assertNotNull”,如果测试失败,servlet会向我显示这样的结果:
测试结束:():空
我试图深入了解:
测试选择器:RequestParser,testSelector [testClass],methodName [testMethod],扩展名[html]
但它再次运行全班同学。
我可以以某种方式从测试类中运行一个测试方法,并使用此servlet查看断言中的消息吗?谢谢!
答案 0 :(得分:0)
您可以尝试在try / catch块中构建断言 - 至少在初始阶段 - 如果失败则可以打印出其他信息。我发现这可以提供更多有用的信息,当我在测试本身出现问题时,在单元测试输出中被屏蔽。如果这是问题,也许你不需要在一次测试中缩小范围。
@Test
public void testYourTestName() throws Exception {
try {
//Code to prepare the object to be tested
assertNull("This is my null test", objectToBeTested);
} catch (Exception e) {
String failureMessage = "\n" + e.toString() + "\n";
for (StackTraceElement stackLine : e.getStackTrace()) {
failureMessage += (stackLine.toString() + "\n");
}
fail("Error: " + failureMessage);
}
}
或者,您可以使用我发现的assertEquals测试有更多有用的显示,例如:
assertEquals(null, objectToBeTested);
如果上面的assertEquals失败,你会得到如下输出:
顺便说一句,我不知道如何运行某个类中存在的其中一个测试,但正如您所发现的那样,您可以缩小它以运行特定类中的所有测试。运行com.myCompany.myApp.myPath命名空间中SomeTestClass中的测试:testMyTestName(com.myCompany.myApp.myPath.myTests):expected:< null> 但是:< java.lang.Object@5c9e4d73>
http://localhost:4502/system/sling/junit/com.myCompany.myApp.myPath.SomeTestClass.html