【问题标题】:What is the difference between classes and test-classes [duplicate]类和测试类有什么区别[重复]
【发布时间】:2017-11-11 19:04:19
【问题描述】:

我有一个 IntelliJ Idea 的 springmvc maven 项目,我将 logbak.xml 放在 src/main/resources 文件夹中,将另一个具有不同配置的 logbak.xml 放在 src/test/resources 文件夹中。

在运行我的 Junit 测试时,测试文件夹中的 logbak.xml 有效。 在 tomcat 服务器中运行我的 web 时,主文件夹中的 logbak.xml 工作。

如果我在测试文件夹中没有 logbak.xml,则主文件夹中的 logbak.xml 有效。

为什么logbak.xml不能加载两次? 上面不同运行时如何决定先加载哪个文件?

【问题讨论】:

    标签: java spring maven junit logback


    【解决方案1】:

    常规课程 (src/main/...) 可以独立工作(没有测试部分的课程)。这些是实现程序或库的实际工作的类。 因此,如果您打包所有内容,则仅包含常规类。

    如您所见,将使用来自 src/main 的 logback.xml。

    测试类 (src/test/...) 用于测试常规类。因此,您需要类路径中的测试类和常规类(以及相应的资源)。 测试类在常规类之前通过 Maven 添加到类路径(IDE 使用 Maven 提供的信息) - 因此测试部分中存在的类/资源具有更高的优先级。如果请求的类/资源在测试部分但在主要部分中不存在,则加载主要部分中的类/资源 - 正如您所观察到的那样。

    【讨论】:

    • 坦克。我想知道谁设置了优先级? IntelliJ 还是 maven?
    • 您可以尝试在 pom.xml 中手动定义源文件夹。但是,如果您想要特定配置,请不要创建两个同名的 logback.xml 文件 - 使用不同的名称并通过系统属性 logback.configurationFile 将其设置为 logback 配置文件 - 请参阅 logback.qos.ch/manual/configuration.html#configFileProperty
    • 谢谢,也许我的问题不清楚。关于您的评论“测试类在常规类之前添加到类路径中”。我想知道哪个使测试部分具有更高的优先级,IDE 还是 Maven。使用 IDE 或 maven 命令运行测试,测试部分将被添加到类路径中。将测试部分添加到哪个剂量? IDE 或 Maven
    • 谁将测试部分添加到类路径并设置优先级? IDE?马文?还是其他?
    • 通常IDE使用maven提供的信息。可能你可以覆盖它,但是这会破坏 Maven 的优势,即它在没有 IDE 的情况下也能工作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-25
    • 2021-08-11
    • 1970-01-01
    • 2010-10-02
    • 2017-11-28
    • 2015-06-26
    相关资源
    最近更新 更多