我继承了一些明确使用 JBoss Logging 实现的 java 代码。我知道这通常配置为 JBoss 子系统,并且在服务器上运行时我能够很好地观察各种日志调整操作。但是,我没有得到任何单元测试的日志消息输出。我在测试类路径中删除了几个配置文件,包括:
- 日志记录属性
- log4j.xml
- log4j2.xml
但还没有看到任何结果。有没有人能够配置 JBoss 日志系统,以便它们在单元测试中在容器外部可见?这甚至可能吗?日志配置指南没有说明如何执行此操作。
我继承了一些明确使用 JBoss Logging 实现的 java 代码。我知道这通常配置为 JBoss 子系统,并且在服务器上运行时我能够很好地观察各种日志调整操作。但是,我没有得到任何单元测试的日志消息输出。我在测试类路径中删除了几个配置文件,包括:
但还没有看到任何结果。有没有人能够配置 JBoss 日志系统,以便它们在单元测试中在容器外部可见?这甚至可能吗?日志配置指南没有说明如何执行此操作。
你可以让 log4j.xml 工作,但你需要确保你在测试类路径上有一个兼容的 vanilla log4j 版本,例如 1.2.17,并且你没有修改过的版本,log4j-jboss-logmanager,在类路径,它不读取 log4j.xml。
请参阅https://stackoverflow.com/a/18323126/1341535。我拿这个:
我建议您使用应用程序服务器提供的日志子系统配置日志管理器。这是配置服务器日志记录的唯一方法。
暗示在测试中配置 JBoss 日志管理器基本上是不可能的,因为没有服务器子系统配置,也没有任何东西可以解析它。也许您可以通过编程方式对其进行配置,但这太不方便了。
所以这让我们使用带有 log4j 的 JBoss Logging 外观作为日志管理器,可以使用 log4j.xml 轻松配置它。
现在,我想到了,Wildfly 中有一个 logging.properties 文件,它在初始化日志子系统之前配置日志记录。这意味着您可以使用 logging.properties 配置 JBoss 日志管理器,您只需将相关的 jar 放在测试类路径中,可能是 jboss-logmanager 和 log4j-jboss-logmanager。
我将尝试使用Arquillian Test Cases测试代码,它具有部署部分代码的可能性,只是为了在“真实环境”中对其进行测试。它在很多 RH JBoss 文档中被推荐。
您可以尝试重用您的 junit 代码,并使用本指南修改它们:http: //arquillian.org/guides/getting_started/
我不是那种技术的大师。我希望它会帮助你。