Java 定制调用TestSuite的多个TestExecutionListeners方法的最佳方式是什么?
为了优化目的,我需要自定义调用逻辑的Java 定制调用TestSuite的多个TestExecutionListeners方法的最佳方式是什么?,java,spring,junit,spring-test,Java,Spring,Junit,Spring Test,为了优化目的,我需要自定义调用逻辑的TestExecutionListeners 在我的例子中,我有一个ApplicationContext和两种类型的测试: 使用WebDriver(我们称之为observatedest) 使用RestTemplate和JdbcTemplate(我们称之为ApiTest) 每种类型都使用自己的TestExecutionListener: observeTest-observeTestListener ApiTest-ApiTestListener observe
TestExecutionListeners
在我的例子中,我有一个ApplicationContext
和两种类型的测试:
WebDriver
(我们称之为observatedest
)RestTemplate
和JdbcTemplate
(我们称之为ApiTest
)TestExecutionListener
:
observeTest
-observeTestListener
ApiTest
-ApiTestListener
observeTestListener
和ApiTestListener
extendTestListener
都定义了prepareTestInstance()
observeTestListener
实现了beforeTestClass()
和beforeTestClass()
方法以及ApiTestListener
的功能
我需要以一种junittestsuite
的方式将上述测试类型组合在一起:
prepareTestInstance()
observetest
即将实例化,就会执行observetestlistener
的beforeTestClass()
observeTest
完成时,调用observeTestListener
的posterTestClass()
ApplicationContexts
中运行(由于不同的配置文件使用)
我将非常感谢任何提示和挖掘方向,以正确实施这种逻辑
到目前为止,我有两个想法:
Runner
(我甚至不相信这是可能的)TestContextManager
,应调用或不应调用特定方法(beforeTestClass()
或beforeTestClass()
)。我觉得@BootstrapWith
customSpringClassRule
应该对我有所帮助谢谢 SpringTestContext框架中的
TestExecutionListener
API在套件级别没有任何生命周期回调
因此,开箱即用,无法指示Spring在套件之前或之后调用Tel上的方法。因此,为支持您的需求而提出的任何解决方案都必须是完全定制的
我无法预见定制的SpringClassRule
会有多大用处:您仍然需要一些可靠的机制来确定测试套件何时开始和结束。这实际上是最大的挑战,因为JUnit4中的套件支持是通过特定的运行程序来实现的。因此,如果您通过JUnit 4套件运行所有测试,您可能会在套件
的自定义子类中构建自己的生命周期回调
问候,
Sam(SpringTestContext框架的作者)为什么不能在两种不同的测试类型上使用@TestExecutionListeners
来注册合适的监听器?@M.Deinum这正是我正在做的,但是当我将这些测试放在套件中时,TestExecutionListeners会在该套件的每个测试中调用它的方法。我试图避免Spring的SuiteExecution Listener可能会起作用。