[英]Java + Maven - executable jar from test class
我有一个多模块Selenium项目,该项目正在使用Page Factory,并通过调用mvn clean verify...
在套件中运行测试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>
。
这是有关解耦模块的标准问题:您有两个模块:从属模块和独立模块。 您需要从依赖对象中调用独立对象,但不将独立对象包括在依赖对象的编译中。
因此,您可以选择几个选项:
在Dependent模块中,您只需调用工厂即可获取每个接口实现并使用它。
呃... 我衷心希望这不是您的情况,因为它不符合标准设计的良好实践。 无论如何,在Java中,您始终可以通过使用Reflection调用任何对象中的任何方法。 虽然我不会建议。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.