如何为Junit单元测试设置JVM参数?

我有一些Junit单元测试,需要大量的堆空间才能运行-即1G。(他们测试了一个Webstart应用程序的内存密集型功能,该功能仅在具有足够的堆空间的情况下运行,并且将在Win 7 64位计算机上内部运行-因此,重新设计测试不是一个实际的建议。)

我正在Intellij IDEA中进行开发,因此我知道可以为测试类设置JVM参数(例如-Xmx1024M)。但是,这仅用于运行整个测试类-如果我想运行单个测试,则必须为该测试方法重新创建运行配置。

而且,这些设置是特定于IDE和特定于盒的-因此,如果我切换盒(在多台计算机上开发)或我的一位同事尝试运行测试,则不会转移这些设置。(此外,我的同事使用了其他IDE(例如Eclipse和NetBeans)。)FWIW,我们正在使用Mercurial进行源代码控制。

在构建周期中,我们使用的是Maven,所以我知道如何为此指定JVM参数。

所以:-我正在寻找一种指定将适用于整个测试类和各个测试方法的JVM参数的方法;-我想在任何计算机上的IDE之间共享这些规范(已从存储库中获取了代码)。

回答:

在IntelliJ中,您可以为每个运行配置指定默认设置。在“运行/调试配置”对话框(用于配置每个测试的堆)中,单击“默认值”和“ JUnit”。这些设置将自动应用于每个新的JUnit测试配置。我猜Eclipse也有类似的设置。

但是,没有简单的选项可以在环境之间转移此类设置(至少在IntelliJ中)。您可以将IntelliJ项目文件提交到您的存储库:也许可以,但是我不建议这样做。

您知道如何将这些设置为maven-surefire-plugin。好。这是最可移植的方法(有关示例,请参见Ptomli的答案)。

其余的-您必须记住,JUnit测试用例只是一堆Java类,而不是独立的程序。由运行程序决定(让它成为独立的JUnit运行程序,即您的IDE)maven-surefire-plugin来设置这些选项。也就是说,没有“便携式”方式来设置这些选项,因此,与运行程序无关地应用内存设置。

举个例子:Xmx开发servlet时不能定义参数-取决于容器来定义它。您不能说:“此servlet应该始终与一起运行Xmx=1G

以上是 如何为Junit单元测试设置JVM参数? 的全部内容, 来源链接: utcz.com/qa/433632.html

回到顶部