您可以尝试在 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