eclipse - 在 Tycho Surefire 测试中使用 Eclipse Orbit 中的 slf4j

标签 eclipse slf4j tycho surefire tycho-surefire-plugin

我目前正在尝试使用 SLF4J 作为 Eclipse Orbit 项目的 bundle 在我们基于 Eclipse 的产品中设置日志记录工具。

我详细使用:

org.slf4j.api
ch.qos.logback.classic
ch.qos.logback.core
ch.qos.logback.slf4j

当我尝试使用 SLF4J 日志 API 运行测试用例时,在 Tycho 构建中我收到错误消息

19:05:50 SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
19:05:50 SLF4J: Defaulting to no-operation (NOP) logger implementation
19:05:50 SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.

Surefire 仅使用 Eclipse 产品和插件 Manifest.MF 文件的目标平台来检测依赖项。由于 ch.qos.logback.slf4j 是一个片段,因此不可能在 list 中直接依赖。

我的假设是该片段不是测试执行期间运行时配置的一部分。

我希望我的问题不是太愚蠢,但是我如何配置环境以便将片段添加到运行时配置并且 SLF4J 可以解决对 StaticLoggerBinder 的请求?

最佳答案

My assumption is that the fragment is not part of the runtime configuration during the test execution.

我不是 slf4j 专家,但这听起来是问题的根源。您需要以某种方式指定您想要的 slf4j 背后的实现。

顺便说一句,您的产品也会遇到同样的问题。你是怎么解决那里的问题的?


针对这两个问题的建议是创建(或重新使用)一个引用您想要拥有的片段的特征。一旦你有了这样的功能,你就可以

  1. 将其包含在您的产品中以确保日志记录在产品安装中有效,并且

  2. 将其包含在您的测试运行时中以使日志记录在那里工作。您可以使用以下配置执行此操作:

    <plugin>
      <groupId>org.eclipse.tycho</groupId>
      <artifactId>target-platform-configuration</artifactId>
      <version>${tycho-version}</version>
      <configuration>
        <dependency-resolution>
          <extraRequirements>
            <requirement>
              <type>eclipse-feature</type>
              <id>feature-referencing-the-logging-implementation-fragment</id>
              <versionRange>0.0.0</versionRange>
            </requirement>
          </extraRequirements>
        </dependency-resolution>
      </configuration>
    </plugin>
    

关于eclipse - 在 Tycho Surefire 测试中使用 Eclipse Orbit 中的 slf4j,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22017174/

相关文章:

java - 如何在eclipse中管理多个包?

java - 无法访问记录器: "cannot resolve symbol (info|warning|debug)"

java - 为什么不使用 java.util.logging?

java - 在 IntelliJ 中浏览自动完成选项时查看完整的 javadoc

java - 使用 servlet 将数据插入数据库返回空白页

slf4j - 如何在 logback-access 中抑制某些请求的日志记录?

tycho - JUnit4Provider 不工作

java - 使用eclipse-plugin打包将java插件转换为maven项目

java - 使用 Tycho 在同一项目中进行源代码和测试源代码

c++ - Eclipse 中的无缝 (RSE) 远程项目