1

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

例如:

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

测试完成:():空

我试图深入输入:

测试选择器:RequestParser、testSelector [testClass]、methodName [testMethod]、extension [html]

但它又一次用 thests 运行整个班级。

我能否以某种方式从测试类中只运行一种测试方法并使用此 servlet 查看来自断言的消息?谢谢!

4

1 回答 1

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):预期:<null> 但为:<java.lang.Object@5c9e4d73>

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

http://localhost:4502/system/sling/junit/com.myCompany.myApp.myPath.SomeTestClass.html
于 2012-06-25T23:25:59.093 回答