为了在Eclipse上运行我的单元测试,我需要为VM设置一些属性.
因此,当我第一次运行JUnit测试时,我进入"Open Run Dialog",然后在我的JUnit配置中进行此测试,我进入"Arguments"选项卡并将我需要的所有内容放在"VM arguments"文本区域中.
有没有办法在运行JUnit时自动添加一组属性,所以我只能右键单击测试类,然后单击"Run as> Junit Test"来运行测试?
技术信息:Eclipse 3.3.2,JUnit 4,Java 5
这些属性用于Spring配置文件*.因此,我不能使用Aaron给出的想法,因为Spring将在测试运行之前初始化.
除此之外,我只需要知道我是否可以在Eclipse中轻松实现这一目标.因此,解决方案不得对Eclipse外部的应用程序编译产生任何影响,因为我的应用程序最终将由Maven2编译(和测试).
*很少有"单元"测试确实需要运行我的Spring配置.好的,我知道这不是真正的单元测试; o)
编辑2:事实上,我确实是通过测试单元开始Spring配置.因此,在启动Spring之前,我检查系统属性,如果我的属性没有设置,那么我给它们所需的值...
但是,我有点失望的是Eclipse不能自动为我做这件事......
你可以试试这个 - 去吧
Window->Preferences->Java->Installed JREs
ans选择正在使用的JVM,而不是像"默认VM"这样的参数
-DrunningInEclipse
您可以在TestCase中查看:
System.getProperty("runningInEclipse") != null
我的解决方案是为扩展TestCase的项目中的所有测试创建一个抽象测试基类.它必须是抽象的,因此自动单元测试查找器不会考虑它.
在这个类的静态代码块中,我设置了我需要的所有属性.这可确保代码只运行一次,并在项目中的任何测试之前运行.
[编辑]你说Spring在测试运行之前已初始化.这是项目中的错误:必须是初始化Spring的测试.否则,您将始终遇到必须测试控制之外的问题.
因此,我建议将Spring init代码移动到可以在环境准备好的时候调用它的地方.
或者,检查环境是否在setUp()中正确设置,如果缺少属性则抛出错误.这样,您至少会知道为什么测试会在以后失败.但我仍然希望能够完全掌控哪个子系统变为现实.还有其他任何事情只会引发灾难.
当我想为我的junit测试设置一些属性条目时,我实现以下内容
protected void setUp() throws Exception { super.setUp(); System.setProperty("Property1", "value1"); System.setProperty("Property2", "value2"); }
在调用测试方法之前设置属性
编辑:您还可以从文件和系统属性中读取属性