【发布时间】:2018-07-05 18:00:31
【问题描述】:
我有一个多模块 Selenium 项目,它使用页面工厂并通过调用 mvn clean verify... 来通过套件运行测试
我创建了一个 JavaFX 应用程序,它加载所有套件并让用户选择一个测试,然后由上述命令运行。
我现在面临的问题是,为了加载所有测试类(我在模块依赖项中使用 test-jar,以便我在 app 模块中的测试类可以看到其他模块中的测试) ,我需要在测试类中拥有main 方法,而不是在主类中。
显然,这是行不通的,因为测试类不包含在 jar 中。
我正在寻找解决方案,要么在测试类中使用该 main 方法,要么让 src/main 查看 src/test。
人们一直给出的建议之一是为测试设置一个单独的模块。这对我来说不是一个选择,因为我无权移动测试类或更改项目结构。
这是我正在使用的插件:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>3.0.2</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<archive>
<manifest>
<mainClass>com.package.myapp.Main</mainClass>
</manifest>
</archive>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
<appendAssemblyId>false</appendAssemblyId>
</configuration>
<executions>
<execution>
<id>make-assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
为了加载套件,我使用 ClassLoader loader = Thread.currentThread().getContextClassLoader() 从 ClassPath.from(loader).getTopLevelClasses() 获取 ImmutableSet<ClassPath.ClassInfo>
【问题讨论】:
-
什么你需要进入测试类的
main方法? -
应用程序的入口点:public static void main(String[] args)。如果我将它移到 src/main 它看不到其他模块的测试类。如果我将它移动到 src/test 我没有工作的可执行 jar
标签: java maven selenium javafx jar