Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/345.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_Junit_Mocking_Mockito_Powermock - Fatal编程技术网

Java 模拟静态空洞法及其性能的改变

Java 模拟静态空洞法及其性能的改变,java,junit,mocking,mockito,powermock,Java,Junit,Mocking,Mockito,Powermock,我有一个来自另一个类的静态void方法,它作为某种记录器随代码一起调用。为了自动测试代码的不同用例,我考虑检查由这种方法创建的系统日志 我的想法是模拟该类并覆盖该方法的行为,以便它输出到System.err。另外,按照说明重定向System.err,以便我可以轻松验证代码的正确功能 我不知道如何覆盖该方法的标准行为,以便它做一些事情(打印到stderr),而不是它通常做的事情(通过不模仿它)或什么都不做(我在(…)时使用得到的)。然后返回(…))相信我,模仿静态方法不是一个好方法 尽管可以使用例

我有一个来自另一个类的静态void方法,它作为某种记录器随代码一起调用。为了自动测试代码的不同用例,我考虑检查由这种方法创建的系统日志

我的想法是模拟该类并覆盖该方法的行为,以便它输出到
System.err
。另外,按照说明重定向
System.err
,以便我可以轻松验证代码的正确功能


我不知道如何覆盖该方法的标准行为,以便它做一些事情(打印到stderr),而不是它通常做的事情(通过不模仿它)或什么都不做(我在(…)时使用
得到的)。然后返回(…)

相信我,模仿静态方法不是一个好方法


尽管可以使用例如
PowerMock
framework(它将取代后台的类加载器),但仍然不鼓励使用这种方法。

相信我,模仿静态方法不是一种好方法


尽管可以使用例如
PowerMock
framework(它将取代引擎盖下的类加载器),但仍然不鼓励这样做。

不要测试日志输出,除非这是您真正想要测试的。为什么不测试该方法的行为呢?该方法的行为很难测试:它连接到服务器,发送消息并在GUI上显示,但我不想测试GUI。然后只测试非GUI行为。如有必要,重构代码以使其可测试。听起来你的方法做的太多了。不要测试日志输出,除非这是你真正想要测试的。为什么不测试该方法的行为呢?该方法的行为很难测试:它连接到服务器,发送消息并在GUI上显示,但我不想测试GUI。然后只测试非GUI行为。如有必要,重构代码以使其可测试。听起来你的方法做得太多了。阿门。我们使用了PowerMock,它给我们带来了很多麻烦——当我们决定删除它并不得不更改数百个测试时,麻烦更大了。阿门。我们使用了PowerMock,它给我们带来了很多麻烦——当我们决定删除它并且不得不更改数百个测试时,麻烦更大了。