2011-09-27 65 views
0

我在一个扩展了AbstractTestNGSpringContextTests的TestNG Test内写了一些测试用例。 ApplicationContext已正确设置,我可以在我的测试用例中使用它。TestNG:在多个Test-Classes中使用ApplicationContext

问题是,设置applicationContext可能需要一些时间,我不想为每个测试类都做这个,因为这需要一些时间,从我的角度来看这是不必要的。

所以我的问题是:是否可以运行多个TestNG测试类使用相同的Spring ApplicationContext,它只能安装一次?

感谢和问候, 罗伯特

回答

1

如何使用@BeforeSuite?

+0

谢谢:)我不知道为什么我从未偶然发现过特定的注释。我现在可以使用@BeforeSuite共享我的ApplicationContext和我的Selenium Webdriver以便重复使用。 –

0

一旦TestContext框架加载的测试ApplicationContext中(或WebApplicationContext的),这种情况下将被缓存和该声明相同的独特环境中的所有后续测试重用配置在同一个测试套件中。

Spring TestContext框架将应用程序上下文存储在静态缓存中。这意味着上下文实际上存储在一个静态变量中。换句话说,如果测试在不同的进程中执行,静态缓存将在每次测试执行之间被清除,这将有效地禁用缓存机制。

为了从缓存机制中受益,所有测试都必须在相同的进程或测试套件中运行。这可以通过在IDE中将所有测试作为一个组来执行完成。同样,当使用Ant,Maven或Gradle等构建框架执行测试时,确保构建框架不在测试之间分叉非常重要。例如,如果Maven Surefire插件的forkMode设置为always或pertest,则TestContext框架将无法缓存测试类之间的应用程序上下文,因此构建过程的运行速度将显着降低。

相关问题