Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何记录断言的真实结果_Java_Logging_Testng_Assert - Fatal编程技术网

Java 如何记录断言的真实结果

Java 如何记录断言的真实结果,java,logging,testng,assert,Java,Logging,Testng,Assert,我正在使用TestNG、WebDriver和log4j编写一些测试 我试图记录断言的结果,无论结果是真是假。例如,当我编写此代码时: Assert.assertTrue(condition) 我想在日志中查看这是通过还是失败。现在,如果结果是失败,我只能看到任何日志。 有人知道如何才能做到这一点吗 谢谢您可以自己覆盖断言类并触发记录器。无法告诉Assert记录成功的断言。您可以这样做: Assert.assertTrue(condition); logger.info(condition ?

我正在使用TestNG、WebDriver和log4j编写一些测试 我试图记录断言的结果,无论结果是真是假。例如,当我编写此代码时:

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,您还可以提供额外的日志信息(如果日志记录器没有)。