2

尽管没有任何main()方法,但我可以在 Eclipse 中运行 JUnit 测试。尽管没有任何代码,但我可以运行 Ant xml。

我可以以同样的方式运行 Spring 上下文吗?

我可以指示 Eclipse 在 spring XML“运行”上快速运行如下程序吗?

public class Runner {
    public static void main(String[] args) {
        new ClassPathXmlApplicationContext("/springtests/test04.xml");
    }
}

更新

这个问题是关于舒适的。我正在为弹簧配置编写很多测试。对于每个测试,我都在编写 JUnit 测试或类似上面的运行器类。所以我想尽量减少工作量:能够右键单击带有 spring 配置的 XML 文件并“运行”它。我所说的“运行”并不是指将 XML 加载到内存中并将 CPU 控制权转移给它。

更新 1

好的SpringRunner,我使用以下代码在我的项目中创建了类

public class SpringRunner {
public static void main(String[] args) {
    new FileSystemXmlApplicationContext(args[0]);
}
}

SpringRunner接下来使用名称和这个类作为主类创建运行/调试配置,并设置

${resource_loc}

在程序参数部分。

这样,我只需单击几下即可“运行”任何弹簧配置:

1)右键单击XML文件

2)选择“运行/调试为...”

3) 选择“运行/调试配置...”

4) 选择“SpringRunner”

5)点击“运行/调试”

现在的问题是是否有可能进一步缩短这个时间?如何告诉 Eclipse 在右键单击和“运行/调试为”时立即在任何 XML 文件或任何文件上显示此选项?

4

2 回答 2

0

不,即使使用 JUnit,您也永远无法做到这一点,....当您运行 JUnit 时,它在内部有一些具有 main 方法的 util 类,该方法通过反射运行您的 junit 类。

请记住,在 java 中没有办法可以在没有 main 方法的情况下运行任何代码。

class A{
       static{
              System.out.print("where is main");
       }

}

此代码在将类加载到 jvm 时有效,这可能是我上面的话的例外,但一般答案是否定的。

快速提问为什么你需要在没有 main 的情况下运行 spring?如果你认为 junit 在没有 main 方法的情况下运行(实际上它有),那么使用像 tomcat 这样的应用容器,你不必声明任何 main 方法,它运行你的代码、你的 spring 或任何你想要的。

于 2012-10-13T18:31:50.550 回答
0

看看http://static.springsource.org/spring/docs/2.5.x/reference/testing.html#testcontext-framework

例如:

@RunWith(SpringJUnit4ClassRunner.class)
// ApplicationContext will be loaded from "/applicationContext.xml" and "/applicationContext-test.xml"
// in the root of the classpath
@ContextConfiguration(locations={"/applicationContext.xml", "/applicationContext-   test.xml"})
public class MyTest {
// class body...

}

希望我能帮助...

于 2012-10-13T18:35:35.270 回答