通过eclipse运行JUnit测试时Maven surefire参数

通过eclipse运行JUnit测试时Maven surefire参数,eclipse,maven,junit,m2eclipse,maven-surefire-plugin,Eclipse,Maven,Junit,M2eclipse,Maven Surefire Plugin,关于Maven-Surefire-Eclipse-JUnit的新手问题 我在项目的pom文件中配置了maven surefire插件,以传递一些额外的JVM参数,如下所示: <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId>

关于Maven-Surefire-Eclipse-JUnit的新手问题

我在项目的pom文件中配置了maven surefire插件,以传递一些额外的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>

org.apache.maven.plugins
maven surefire插件
${maven.surefire.plugin.version}
-d64-Xms128m-Xmx4096m-XX:PermSize=512m-Duser.timezone=UTC-XX:-UseSplitVerifier
当我从Eclipse以run as->JUnit test的形式运行该项目的测试用例时,尽管类路径设置正确,但argLine中指定的附加参数不包括在调用中。我必须在相关的
调试配置下手动输入参数。我不太明白JUnit是如何意识到它需要将测试范围的JAR放在类路径上的,并且在某种程度上意味着Eclipse中的JUnit工具通过M2E意识到Maven的?如果是这样,我们如何使它也读argLine。我知道这听起来很具体,但其他人在类似的情况下如何应对

提前谢谢

EclipseJUnitLauncher(选择
RunAs->JUnitTest
)是一个独立的测试运行程序,它有自己预定义的构建和运行生命周期,与Maven无关,它不会神奇地获取pom并读取surefire配置并使用它们来驱动测试运行

如果您的项目作为现有Maven项目导入,请使用Maven(选择
Run as->Maven test
)启动JUnit测试,它将选择并使用surefire配置。这与从命令行运行
mvn测试
完全相同,它只在控制台中输出运行日志,您将无法使用漂亮的红色和绿色JUnitUI窗口


希望这是有意义的。

如果Eclipse JUnit是一个独立的测试运行程序,那么它如何根据测试范围知道需要放在类路径上的JAR?感谢您提供的信息!然后下一步将是查看m2eclipse是否也可以读取surefire插件配置的argLine,并以某种方式填充该项目中测试的调试配置,以获得argLine中的参数,对吗?还是这个要求太高了?:)我喜欢当我运行JUnit测试时出现的红绿色的东西,以及与运行Maven测试相比,我能够轻松地看到异常和测试结果。但是手动为所有测试用例反复添加这些参数是一件痛苦的事情。但是,如果没有其他选择,我们就别无选择了!:)如果在target/Surefire-reports.m2e钩子中打开许多XML文件,包括JUnit test runner启动器,您可以在Eclipse的JUnit视图中查看Surefire的测试报告。让它注入此信息是完全有效的。您可以通过在Eclipse中lancher定义的
arguments
选项卡中输入程序参数来向Junit启动配置添加程序参数。注意,您需要将虚拟机的参数与程序本身的参数分开。我看到IntelliJ确实做到了这一点我所期望的。