Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Junit 使用特定于测试的jar重新编译源代码_Junit_Maven_Automated Tests - Fatal编程技术网

Junit 使用特定于测试的jar重新编译源代码

Junit 使用特定于测试的jar重新编译源代码,junit,maven,automated-tests,Junit,Maven,Automated Tests,我有一个多模块项目,它依赖于一个相当大的第三方库/API。无法使用实际库运行自动化junit测试,因为API与开发环境管理外部的系统交互。作为一种解决方法,我们创建了模拟接口/API的类,以便我们可以执行junits。我们使用eclipse作为开发的IDE,所以要运行junits,我们只需将jar在类路径中向上移动,重新编译,运行junits,一切都很好 现在我们正在迁移到Maven,正在寻找类似的解决方案。基本上,在构建代码之后,需要使用mock jar重新构建所有代码,以运行junit测试。

我有一个多模块项目,它依赖于一个相当大的第三方库/API。无法使用实际库运行自动化junit测试,因为API与开发环境管理外部的系统交互。作为一种解决方法,我们创建了模拟接口/API的类,以便我们可以执行junits。我们使用eclipse作为开发的IDE,所以要运行junits,我们只需将jar在类路径中向上移动,重新编译,运行junits,一切都很好

现在我们正在迁移到Maven,正在寻找类似的解决方案。基本上,在构建代码之后,需要使用mock jar重新构建所有代码,以运行junit测试。这涉及应用程序的所有模块。我尝试在测试范围中添加jar,但这仅用于编译测试类;源代码类仍然使用真实的jar进行编译。然而,它在运行时失败,因为我们的模拟jar不匹配真实jar的所有签名(所以jar的热交换不起作用;使所有签名匹配将是一项艰巨的任务)。因此,需要使用jar重新编译源代码

因此,似乎有两种选择: 1) 制作一个独立的测试模块,以某种方式引入所有源模块代码,并使用模拟jar重新编译它,然后运行测试或测试 2) 每个模块除了使用mock jar编译的可安装jar之外,还创建一个testjar,然后在测试阶段由依赖模块使用

请告知。如果您能举例说明如何执行上述任一操作,我们将不胜感激。

请查看链接。我想它有你需要的。您可以使用两个maven配置文件来处理这个问题。根据需要,您可以对每个配置文件具有不同的依赖项