在Eclipse中运行JUnit测试时,使用Maven Surefire参数

8

关于Maven,Surefire,Eclipse和JUnit的新手问题

我已经在我的项目的pom文件中配置了maven-surefire-plugin以传递一些额外的JVM参数,如下所示:

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>${maven.surefire.plugin.version}</version>
            <configuration>
                <argLine>-d64 -Xms128m -Xmx4096m -XX:PermSize=512m -Duser.timezone=UTC -XX:-UseSplitVerifier</argLine>
            </configuration>
        </plugin>

当我在Eclipse中以Run As->JUnit Test运行此项目的测试用例时,虽然classpath已正确设置,但在argLine中指定的其他参数未包含在调用中。我必须手动输入相关的参数在Debug Configurations下。我不太明白JUnit如何知道它需要将测试范围的jar放在classpath上,并且在某种程度上意味着Eclipse中的JUnit工具通过M2E知道了Maven?如果是这样,我们如何使它也读取argLine。我知道这听起来非常具体 - 但其他人如何处理类似情况?
提前感谢!

您可以通过在Eclipse中的启动器定义的“参数”选项卡中输入程序参数来添加Junit启动配置。 - Dave
请注意,您需要将虚拟机参数和程序本身的参数分开。 - Thorbjørn Ravn Andersen
我发现IntelliJ正是我所期望的。 - Kilokahn
1个回答

9
Eclipse JUnit Launcher(选择“运行为 -> JUnit测试”)是一个独立的测试运行器,具有其自己预定义的构建和运行生命周期,与Maven无关。它不会神奇地获取您的pom文件并阅读surefire配置以驱动测试运行。
如果您的项目已导入现有的Maven项目,请使用Maven(选择“运行为 -> Maven测试”)启动JUnit测试,它将获取并使用surefire配置。这与从命令行运行“mvn test”完全相同,只会在控制台输出运行日志,您将无法使用漂亮的红色和绿色JUnit UI窗口。
希望这有意义。

如果Eclipse JUnit是一个独立的测试运行器,那么它如何根据测试范围知道需要放在类路径上的jar包呢? - Kilokahn
1
谢谢提供信息!接下来的步骤是看看m2eclipse是否也能读取surefire插件配置中的argLine,并以某种方式填充该项目测试的调试配置,以使用argLine中的参数,对吗?或者这要求太高了? :) - Kilokahn
1
当我运行JUnit测试时,我喜欢出现的红绿色指示灯和轻松查看异常和测试结果的方式,与运行Maven测试相比。但是,手动为所有测试用例一遍又一遍地添加这些参数真是令人头疼。然而,如果没有其他选择,我们也别无选择! :) - Kilokahn
8
如果您在目标/surefire-reports中打开XML文件,就可以在Eclipse的JUnit视图中查看Surefire的测试报告。 - thSoft
1
m2e钩子连接到许多地方,包括junit测试运行器启动程序。将其注入此信息是完全有效的。 - Thorbjørn Ravn Andersen
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接