[英]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/java
和src/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/java
和src/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.