Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring TestNG:在多个测试类中使用ApplicationContext_Spring_Testng - Fatal编程技术网

Spring TestNG:在多个测试类中使用ApplicationContext

Spring TestNG:在多个测试类中使用ApplicationContext,spring,testng,Spring,Testng,我在扩展AbstractTestNGSpringContextTests的单个TestNG测试中编写了一些测试用例。ApplicationContext设置正确,我可以在测试用例中使用它 问题是applicationContext的设置可能需要一些时间,我不想对我拥有的每个测试类都这样做,因为这将需要一些时间,从我的观点来看,这是不必要的 所以我的问题是:是否可以使用只设置一次的相同Spring ApplicationContext运行多个TestNG测试类 谢谢并致以最良好的祝愿, Rober

我在扩展AbstractTestNGSpringContextTests的单个TestNG测试中编写了一些测试用例。ApplicationContext设置正确,我可以在测试用例中使用它

问题是applicationContext的设置可能需要一些时间,我不想对我拥有的每个测试类都这样做,因为这将需要一些时间,从我的观点来看,这是不必要的

所以我的问题是:是否可以使用只设置一次的相同Spring ApplicationContext运行多个TestNG测试类

谢谢并致以最良好的祝愿,
Robert

使用@BeforeSuite如何?

使用@BeforeSuite如何?

当您在
@ContextConfiguration
注释中使用类似的
位置时,Spring可能会缓存并重用
应用程序上下文。请参阅Tomasz Nurkiewicz(@Tomasz Nurkiewicz)的相关文章,该文章位于当您在
@ContextConfiguration
注释中使用类似的
位置时,Spring可能会缓存并重用
应用程序上下文。参见Tomasz Nurkiewicz(@Tomasz Nurkiewicz)在

上的相关文章一旦TestContext框架为测试加载了ApplicationContext(或WebApplicationContext),该上下文将被缓存并重新用于在同一测试套件中声明相同唯一上下文配置的所有后续测试

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


为了从缓存机制中获益,所有测试都必须在同一进程或测试套件中运行。这可以通过在IDE中作为一个组执行所有测试来实现。类似地,当使用构建框架(如Ant、Maven或Gradle)执行测试时,确保构建框架不会在测试之间分叉非常重要。例如,如果Maven Surefire插件的forkMode设置为always或pertest,TestContext框架将无法在测试类之间缓存应用程序上下文,因此生成过程将显著减慢。

一旦TestContext框架加载ApplicationContext(或WebApplicationContext)对于测试,该上下文将被缓存并重新用于在同一测试套件中声明相同唯一上下文配置的所有后续测试

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

为了从缓存机制中获益,所有测试都必须在同一进程或测试套件中运行。这可以通过在IDE中作为一个组执行所有测试来实现。类似地,当使用构建框架(如Ant、Maven或Gradle)执行测试时,确保构建框架不会在测试之间分叉非常重要。例如,如果Maven Surefire插件的forkMode设置为always或pertest,TestContext框架将无法在测试类之间缓存应用程序上下文,因此构建过程将运行得非常慢。

谢谢:)我不知道为什么我以前从未遇到过这个特定的注释。我现在可以使用@BeforeSuite.Thank:)共享我的ApplicationContext和Selenium Webdriver以供重复使用。我不知道为什么我以前从未偶然发现过这个特定的注释。我现在可以使用@BeforeSuite共享我的ApplicationContext和Selenium Webdriver以供重用。