Java 如何记录断言的真实结果
我正在使用TestNG、WebDriver和log4j编写一些测试 我试图记录断言的结果,无论结果是真是假。例如,当我编写此代码时:Java 如何记录断言的真实结果,java,logging,testng,assert,Java,Logging,Testng,Assert,我正在使用TestNG、WebDriver和log4j编写一些测试 我试图记录断言的结果,无论结果是真是假。例如,当我编写此代码时: Assert.assertTrue(condition) 我想在日志中查看这是通过还是失败。现在,如果结果是失败,我只能看到任何日志。 有人知道如何才能做到这一点吗 谢谢您可以自己覆盖断言类并触发记录器。无法告诉Assert记录成功的断言。您可以这样做: Assert.assertTrue(condition); logger.info(condition ?
Assert.assertTrue(condition)
我想在日志中查看这是通过还是失败。现在,如果结果是失败,我只能看到任何日志。
有人知道如何才能做到这一点吗
谢谢您可以自己覆盖断言类并触发记录器。无法告诉
Assert
记录成功的断言。您可以这样做:
Assert.assertTrue(condition);
logger.info(condition ? "PASS" : "FAIL");
或者子类
Assert
和重新实现assertTrue
为您执行日志记录。注意:在这种情况下,您的日志行将声明位于Assert.assertTrue
内,而不是调用点内,因此您必须以某种方式进行修复。我正在重新设计TestNG的Assert系统,请查看新的体系结构,并告诉我您的想法:
我现在就是这样做的,但我不想为了记录这一点而编写额外的代码。正如rollstuhlfahrer所说,最好的方法可能是覆盖Assert类。我想我可以找到一种我不知道的不同方式。非常感谢你们的fase relpiesDon’我不认为这会起作用,如果失败,日志行将不会被调用。@Tom我不是在写单元测试,但是selenium测试,有时我需要让断言证明满足了某些条件,我也希望能够在logs@Tom:OP表示日志中已包含故障。我再次设置该条件只是因为断言可能被关闭(我不知道
-ea
是否在Assert
类上工作)。为什么要这样做?这是一个不寻常的工作流程-对于单元测试来说,被测试的值通常只有在失败时才有意义。你是说它是由MyAssert.assertTrue(条件)记录结果,然后调用Assert.asserTrue吗?是的,我的意思是。使用MyAssert,您还可以提供额外的日志信息(如果日志记录器没有)。