TestNG软断言输出不全面

时间:2015-03-23 04:27:40

标签: java selenium-webdriver testng

我在我的代码中使用了TestNG软断言,如。

public class AssertionTest{
  private SoftAssert softAssert = new SoftAssert();

    @Test(enabled = true)
    public void testSoftAssertion(){
        softAssert.assertTrue(false);
        softAssert.assertTrue(true); 
        softAssert.assertEquals("India", "US");

        softAssert.assertAll();
    }
}

当测试执行完成时,测试失败(如预期的那样),但结果不提供详细信息,而是提供如下信息,这无助于理解哪个断言失败。

FAILED: testSoftAssertion
java.lang.AssertionError: The following asserts failed:
null, null

我期待输出有助于理解结果的东西(这种类型的输出是在我们使用硬断言时产生的,即Assert类)。

FAILED: testSoftAssertion
java.lang.AssertionError: The following asserts failed:
expected [true] but found [false]
expected [India] but found [US]

TestNG软断言是否存在这个已知的缺陷/缺点,或者有些东西,我不知道?

2 个答案:

答案 0 :(得分:10)

您需要在断言时提供失败消息,然后它才会在报告中占用。请考虑以下代码段:

import org.testng.annotations.Test;
import org.testng.asserts.SoftAssert;

public class SoftAsert
{
    @Test
    public void test()
    {
        SoftAssert asert=new SoftAssert();
        asert.assertEquals(false, true,"failed");
        asert.assertEquals(0, 1,"brokedown");
        asert.assertAll();
    }
}

输出:

FAILED: test
java.lang.AssertionError: The following asserts failed:
failed, brokedown

这就是软断言的工作原理。目的是在出现故障时显示错误消息。如果这有帮助,请告诉我。

答案 1 :(得分:-1)

不确定您是否解决了格式问题,但TestNG接受字符串中的新行(如在报表语句中)的格式,如\ n。试着看看那些选项。