运行JUnitServllet以在Adobe cq5中进行集成测试

时间:2012-06-22 08:28:56

标签: cq5

我的问题是在Adobe cq5中进行集成测试的JUnitServlet。当它运行测试时,如果测试方法中有错误,它只显示来自他身边的错误消息。我们如何才能看到我们在测试方法断言中写入的消息。

例如:

如果我在测试方法中有几个“assertNotNull”,如果测试失败,servlet会向我显示这样的结果:

测试结束:():空

我试图深入了解:

测试选择器:RequestParser,testSelector [testClass],methodName [testMethod],扩展名[html]

但它再次运行全班同学。

我可以以某种方式从测试类中运行一个测试方法,并使用此servlet查看断言中的消息吗?谢谢!

1 个答案:

答案 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失败,你会得到如下输出:

  

testMyTestName(com.myCompany.myApp.myPath.myTests):expected:< null>   但是:< java.lang.Object@5c9e4d73>

顺便说一句,我不知道如何运行某个类中存在的其中一个测试,但正如您所发现的那样,您可以缩小它以运行特定类中的所有测试。运行com.myCompany.myApp.myPath命名空间中SomeTestClass中的测试:

http://localhost:4502/system/sling/junit/com.myCompany.myApp.myPath.SomeTestClass.html