我在一个TestNG Test中编写了一些测试用例,它扩展了AbstractTestNGSpringContextTests。 ApplicationContext已正确设置,我可以在我的测试用例中使用它。
问题是applicationContext的设置可能需要一些时间,我不想为每个测试类做这个,因为从我的角度来看,这需要一些时间。< / p>
所以我的问题是:是否可以使用仅设置一次的相同Spring ApplicationContext运行多个TestNG测试类?
谢谢和最诚挚的问候, 罗伯特
答案 0 :(得分:1)
如何使用@BeforeSuite?
答案 1 :(得分:1)
当您在ApplicationContext
注释中使用类似locations
时,Spring可以缓存并重复使用@ContextConfiguration
。参见Tomasz Nurkiewicz(@ tomasz-nurkiewicz)的相关文章http://nurkiewicz.blogspot.com/2010/12/speeding-up-spring-integration-tests.html
答案 2 :(得分:0)
一旦TestContext框架为测试加载ApplicationContext(或WebApplicationContext),该上下文将被缓存并重用于在同一测试套件中声明相同唯一上下文配置的所有后续测试。
Spring TestContext框架将应用程序上下文存储在静态缓存中。这意味着上下文实际上存储在静态变量中。换句话说,如果测试在单独的进程中执行,则静态高速缓存将在每次测试执行之间被清除,这将有效地禁用高速缓存机制。
要从缓存机制中受益,所有测试必须在同一进程或测试套件中运行。这可以通过在IDE中作为一个组执行所有测试来实现。类似地,当使用诸如Ant,Maven或Gradle之类的构建框架执行测试时,确保构建框架不在测试之间进行分配是很重要的。例如,如果Maven Surefire插件的forkMode设置为always或pertest,则TestContext框架将无法在测试类之间缓存应用程序上下文,因此构建过程的运行速度会明显变慢。