在不同的Java项目中重用JUnit 5@ArgumentsSource参数化测试类

wgmfuz8q  于 2022-11-11  发布在  Java
关注(0)|答案(1)|浏览(120)

我有下面的maven java项目:

  1. com.validator
  2. com.demoModel1
  3. com.demoModel2

Validator项目包含验证代码,demoModel 1demoModel 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 1demoModel 2项目中创建此ExecuteSimulation类。但我希望在demoModel 1demoModel 2项目中重用ExecuteSimulation类。我尝试将ExecuteSimulation类放在com.validator项目中。如果我将该类放在com.validatorsrc/java*文件夹中,项目,它会产生错误,并抱怨*找不到junit相依性***。
如果我将
ExecuteSimulation
类放在
com.validator项目的
src/test*文件夹中,并尝试在demoModel 1demoModel 2中使用它,则两个项目都会产生错误,抱怨未找到com.validator项目中对ExecuteSimulation**类的引用。我猜这是由于src/test的位置所致。
在这方面,在不同的Maven Java项目中重用这个参数化测试类的正确方法是什么?

hujrc8aj

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作用域,但它们将仅在导入它们的模块中以该作用域使用。

相关问题