Java 忽略TestNG断言消息中的方法

Java 忽略TestNG断言消息中的方法,java,testng,Java,Testng,当TestNG测试方法中的assert测试失败时,它会输出一条包含方法名称的消息,如下所示 MyTestFixture:49->when_clicking_x_y_happens:49 expected:<Foo...> but was:<Bar...> MyTestFixture:49->单击时发生:49预期:但是: 到目前为止一切都很好。但是,当在测试方法以外的其他方法中进行断言时,会显示一条奇怪的消息: MyTestFixture:49->TestH

当TestNG测试方法中的assert测试失败时,它会输出一条包含方法名称的消息,如下所示

MyTestFixture:49->when_clicking_x_y_happens:49 expected:<Foo...> but was:<Bar...>
MyTestFixture:49->单击时发生:49预期:但是:
到目前为止一切都很好。但是,当在测试方法以外的其他方法中进行断言时,会显示一条奇怪的消息:

MyTestFixture:49->TestHelper.verifyXYZwasDisplayed:49 expected:<Foo...> but was:<Bar...>
MyTestFixture:49->TestHelper.verifyXYZwasDisplayed:49预期值:但为:

此处消息中显示了来自
TestHelper
类的
verifyxyzwas。如果消息中包含测试方法名称,则会更有帮助。当TestNG创建断言消息时,我是否可以以某种方式将此方法注释为忽略?

我猜您的
TestHelper.verifyXYZwasDisplayed()
方法中有一个
assert*()
。这意味着抛出的
AssertionError
将指向使用此断言的行

相反,如果满足条件,则使其返回一个布尔值,该布尔值为true,然后使用:

assertTrue(TestHelper.verifyXYZwasDisplayed(blah));

那就没有办法了?如果我这样做,那么信息就会变得更糟:“预期为真,但为假”。这不是很有帮助…您可以自定义错误消息(第二个参数)。另一种解决方案是创建一个自定义断言,但即使这样,错误也会与自定义断言中的行相关联,而不是与方法本身相关联。在常规断言中,您不必指定消息来获取“预期的x,但得到的y”消息。这并不意味着您不能这样做,是吗?嗯。。。我可以这么做,但显然我做不到我在问题中所要求的。。。