繁体   English   中英

want to execute a java test class which is in src/test/java from src/main/java but I am unable to import that java class in src/main/java?

[英]want to execute a java test class which is in src/test/java from src/main/java but I am unable to import that java class in src/main/java?

In my requirement I need to execute the Junit test class in src/test/java from a java class in src/main/java , but I am unable to import the java class present in src/test/java from src/main/java .

理想情况下 Maven 结构也将期待主代码将是src/main/java和测试代码将在src/test/javasrc/main/java不应该依赖于src/test/java

但就我而言,我想从src/main/java的主程序执行 Junit class 但我无法从src/test/java导入该 class 。

请向我提供有关如何实现此目标的任何建议,或者是否有任何方法可以在 POM 文件中提及,以便 maven 允许我从src/test/java中的src/main/java导入 class 。

这是不允许的操作。 Maven 允许您在测试代码中引用src/main/java中的所有代码,反之亦然。

在生产代码中依赖仅在测试时可用的东西在语义上是不正确的。 在生产中想象你的测试代码甚至不存在( src/test/java下的任何东西都不可用,但src/main/java应该仍然有效)。

如果您确实需要主代码中的功能,建议在src/main/java下的某处重构代码,然后在您最初需要它的 class 以及测试代码中使用它。

例如:

// src/main/java
class Production {
    void foo() {
        someTestClass.bar();
    }
}

// src/test/java
class SomeTestClass {
    void testSomething() {
        bar();
    }
    void bar() {
    }
}

上面的代码不会编译,但你可以像这样重构它:

// src/main/java
class Production {
    void foo() {
        utility.bar();
    }
}
class Utility {
    void bar() {
    }
}

// src/test/java
class SomeTestClass {
    void testSomething() {
        utility.bar();
    }
}

因为依赖是单向的,所以代码现在对src/main/javasrc/test/java都可用。

如果您希望一个 Maven 项目的测试代码依赖于另一个 Maven 项目的测试代码,那么您应该使用 scope test声明依赖关系,如下所示:

        <dependency>
            <groupId>com.mycompany</groupId>
            <artifactId>cool-testing-dependency</artifactId>
            <scope>test</scope>
        </dependency>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM