Java TestNG软断言输出不全面

Java TestNG软断言输出不全面,java,selenium-webdriver,testng,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);

我在我的代码中使用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
class)


TestNG soft assertion是否存在已知的缺陷/缺点,或者我缺少了什么?

您需要在断言时提供失败消息,只有这样它才会出现在报告中。考虑下面的代码片段:

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

这就是软断言的工作原理。目的是在出现故障时显示错误消息。让我知道这是否有帮助。

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

我注意到的问题是,它在一行上输出所有失败的断言。因此,如果你有不止一行的文本,它看起来不会很有用。我很好奇是否有一种方法可以进行格式化。我做的最好的方法是..扩展该类并定制它以满足我的需要,因为它不仅是关于格式化,而且做更多的事情,比如拍摄屏幕截图、记录日志(报告和其他地方的漂亮格式)如果您发现此信息有用,则接受此作为答案,以便其他搜索类似查询的人可能会发现此信息有用,可以更新以进行评论;看起来TestNG的最新版本实际上正确地格式化了输出。或者我在某个地方放了一行新词,但我没有意识到。它只在旧版本中放了一行。TestNG 6.9.6已经有了softAssert,可以在每次失败输出后生成下一行。比较一下,这不是正确的编程方法。您应该重新加载assertAll()方法并在其中添加一个\n\t方法,而不是在每条消息中插入\n\t方法。或者使用新的TestNG,这已经纠正了这个问题,谢谢作者。请注意,\n仅适用于windows@Gangnus-你知道有什么代码示例显示如何使软断言在不同的行而不是一行中显示失败吗?@testerjoe2这是另一个问题,也应该作为另一个问题放在这里。(在旧问题中搜索后)
FAILED: test
java.lang.AssertionError: The following asserts failed:
failed, brokedown