Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/359.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 由于单元测试的日志文件,Jenkins Maven发布失败_Java_Maven_Unit Testing_Logging_Jenkins - Fatal编程技术网

Java 由于单元测试的日志文件,Jenkins Maven发布失败

Java 由于单元测试的日志文件,Jenkins Maven发布失败,java,maven,unit-testing,logging,jenkins,Java,Maven,Unit Testing,Logging,Jenkins,不幸的是,我可能在一个问题中有两个问题,或者更确切地说,解决方案可能有两种不同的方式。我在我单元测试的几个类中设置了log4j记录器。当我运行mvn clean install时,它显然会运行这些测试,然后创建一个日志文件(该文件通常为空,因为没有记录任何令人兴奋的内容)。这不一定是个问题,只是当我执行Maven Release时,Jenkins似乎不喜欢这样。它大喊工作区有本地更改,并在声明失败之前引用日志文件 我知道这是单元测试,因为如果我将它们更改为集成测试或忽略它们,一切都会正常工作。但

不幸的是,我可能在一个问题中有两个问题,或者更确切地说,解决方案可能有两种不同的方式。我在我单元测试的几个类中设置了log4j记录器。当我运行
mvn clean install
时,它显然会运行这些测试,然后创建一个日志文件(该文件通常为空,因为没有记录任何令人兴奋的内容)。这不一定是个问题,只是当我执行Maven Release时,Jenkins似乎不喜欢这样。它大喊工作区有本地更改,并在声明失败之前引用日志文件

我知道这是单元测试,因为如果我将它们更改为集成测试或忽略它们,一切都会正常工作。但我想要一个解决方案,而不是解决办法

詹金斯的配置是否允许我纠正这一点

或者有没有一种策略可以模拟或忽略单元测试的日志记录


我不一定要忽略它们,但这会妨碍发布。

我不太清楚
Perform Maven release
的功能,但我可以建议一些解决方案:

  • 从源代码存储库中删除日志文件(因为每次运行时都会重新生成日志文件,所以我认为它不应该驻留在源代码存储库中)
  • 将有问题的日志文件的路径添加到版本控制忽略的文件列表中(例如,git使用名为gitignore-)的文件

  • 希望这有帮助

    阿米特有一些好主意,我将提出更多建议:

    • 用于在项目中进行日志记录,并且在测试阶段不绑定日志记录实现
    • 更好的方法是在测试阶段绑定,这会记录到内存中。然后,您还可以针对日志编写测试,以确保它在您期望的时候发生

    Amit的解决方案被列为#2,它对我们很有效-在我们的商店中,我们使用SVN,因此我们将这些文件添加到.SVN ignore中,
    mvn release:prepare
    将成功运行。我将在下一个版本中发现这是否有效,但我在工作列表的工作区中没有看到它。好主意。