我有一些需要大量堆空间运行的Junit单元测试 - 即1G.(他们为仅在足够的堆空间运行的webstart应用程序测试内存密集型功能,并且将在Win 7 64位计算机上内部运行 - 因此重新设计测试并不是一个实用的建议.)
我在Intellij IDEA中开发,所以我知道我可以为测试类设置JVM参数(例如-Xmx1024M).但是,这仅用于运行整个测试类 - 如果我想运行单独的测试,我必须重新创建该测试方法的运行配置.
此外,这些是IDE和特定于盒子的 - 所以如果我切换盒子(我在多台机器上开发)或者我的一个同事试图运行测试,那么这些设置不会被转移.(此外,我的同事也使用其他IDE,如Eclipse和NetBeans.)FWIW,我们使用mercurial进行源代码控制.
对于构建周期,我们使用Maven,所以我知道如何为此指定JVM参数.
所以: - 我正在寻找一种方法来指定适用于整个测试类和各个测试方法的JVM参数; - 我想在任何机器上的IDE之间共享这些规范(从存储库中获取代码).
我项目中的Junits需要从类路径加载属性文件.如何指定这些属性文件的目录,以便Maven在运行测试之前在类路径中设置它?
我们在Hudson中使用Maven来运行我们的Java构建过程和Surefire插件来执行JUnit测试但是我遇到了一个需要本机dll的项目的单元测试问题.
我们看到的错误是:
测试错误:TestFormRegistrationServiceConnection(com.#productidentifierremoved#.test.RegistrationServiceTest):java.library.path中没有Authenticator
Authenticator是我们需要的DLL的名称.我发现这个SO帖子表明设置它的唯一方法是通过argLine.我们将配置修改为:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-report-plugin</artifactId>
<version>2.10</version>
<configuration>
<forkMode>once</forkMode>
<argLine>-Djava.library.path=${basedir}\src\main\native\Authenticator\Release</argLine>
</configuration>
</plugin>
Run Code Online (Sandbox Code Playgroud)
但是,如果我们包含System.out.println(System.getProperty("java.library.path")),这仍会产生相同的错误; 我们可以看到这没有添加到路径中.
我们如何解决这个问题?