在@SpringBootTest中,有没有办法让SpringRunner.class和Theories.class共存



希望这是一个简单的问题。

我有一个弹簧靴测试。

注释为:

@RunWith(SpringRunner.class)
@SpringBootTest(classes = Main.class)
@TestPropertySource(locations { "myproperties.properties" })

我有一个测试,我很想用@RunWith(Theories.class(。这个测试在我的代码中的几个不同地方测试基本上相同的东西。

当然,@RunWith必须是单数。

那么,有没有一种方法可以让这些理论成为一种规则?还是SpringRunner.class?或者是让它们共存的东西?

应该有两种方法来解决这个问题:

  1. SpringClassRule和SpringMethodRule <--我使用这种方法

    只需使用

    @RunWith(Theories.class)
    public class YourTest {
    @ClassRule
    public static final SpringClassRule scr = new SpringClassRule();
    @Rule
    public final SpringMethodRule smr = new SpringMethodRule()
    
  2. 手动初始化TestContextManager根据Baeldung,它适用于参数化的,但我不知道为什么它不适用于理论;(通常,不建议手动初始化TestContextManager。相反,Spring建议使用SpringClassRule和SpringMethodRule

    @RunWith(Parameterized.class)
    public class YourTest {
    private TestContextManager testContextManager;
    @Before
    public void setup() throws Exception {
    this.testContextManager = new TestContextManager(getClass());
    this.testContextManager.prepareTestInstance(this);
    }
    

相关内容

  • 没有找到相关文章

最新更新