我有下面的maven java项目:
- com.validator
- com.demoModel1
- com.demoModel2
Validator项目包含验证代码,demoModel 1和demoModel 2项目使用jar来执行验证。为了执行验证,在demoModel 1和demoModel 2项目中,我必须编写JUnit测试用例,但这些测试用例是相似的,只是作为参数的索引不同。因此,我已经创建了一个名为ExecuteSimulation的参数化测试类:
import org.junit.jupiter.api.extension.ExtensionContext;
import org.junit.jupiter.params.provider.Arguments;
import org.junit.jupiter.params.provider.ArgumentsProvider;
public class ExecuteSimulation implements ArgumentsProvider {}
目前来说,我必须在demoModel 1和demoModel 2项目中创建此ExecuteSimulation类。但我希望在demoModel 1和demoModel 2项目中重用ExecuteSimulation类。我尝试将ExecuteSimulation类放在com.validator项目中。如果我将该类放在com.validator的src/java*文件夹中,项目,它会产生错误,并抱怨*找不到junit相依性***。
如果我将ExecuteSimulation类放在com.validator项目的src/test*文件夹中,并尝试在demoModel 1和demoModel 2中使用它,则两个项目都会产生错误,抱怨未找到com.validator项目中对ExecuteSimulation**类的引用。我猜这是由于src/test的位置所致。
在这方面,在不同的Maven Java项目中重用这个参数化测试类的正确方法是什么?
1条答案
按热度按时间hujrc8aj1#
Maven JAR plugin documentation ("how to create a jar containing test classes")中描述了您要实现的目标。基本上有两种选择:
1.使用现有模块的测试类创建单独的
jar
文件(基于src/test
构建test-jar
)。1.创建一个单独的模块,其中包含测试中使用的类(基于此模块中的
src/java
构建)。这两种方法都将产生一个
jar
文件,该文件应该作为依赖项导入到其他具有test
作用域的模块中。如果您决定使用第二种方法,则像JUnit这样的依赖项在这个新模块中将不具有test
作用域,但它们将仅在导入它们的模块中以该作用域使用。