异常发生后评估断言?

时间:2015-10-02 08:23:40

标签: java error-handling testng runtimeexception

版本:testng-6.8.8.jar

此测试运行为绿色:

@Test(expectedExceptions = { NullPointerException.class })
public void shouldTestNGIgnoreAssertsAfterExceptionThrown() throws Exception {
  String iAmNull = null;
  int length = iAmNull.length();
  assertEquals(0, 1);
}

任何配置文件或其他选项
在异常发生后继续并评估断言?

2 个答案:

答案 0 :(得分:2)

你必须改写你的测试。 例如:

@Test
public void shouldTestNGIgnoreAssertsAfterExceptionThrown() {
  String iAmNull = null;
  boolean hasNpe = false;
  try {
    int length = iAmNull.length();
  } catch(NullPointerException npe) {
    hasNpe = true;
  }
  assertTrue(hasNpe);
  assertEquals(0, 1);
}

答案 1 :(得分:2)

它与TestNG无关。这是关于Java如何工作(并且应该工作)。对null(<nullObject>.someMethod())的任何方法调用都会导致抛出NullPointerException。如果你没有在你的方法中捕获它,它会在调用堆栈中传播。如果它没有在任何地方处理,则执行以堆栈跟踪结束。