希望这是一个简单的问题。
我有一个弹簧靴测试。
注释为:
@RunWith(SpringRunner.class)
@SpringBootTest(classes = Main.class)
@TestPropertySource(locations { "myproperties.properties" })
我有一个测试,我很想用@RunWith(Theories.class(。这个测试在我的代码中的几个不同地方测试基本上相同的东西。
当然,@RunWith必须是单数。
那么,有没有一种方法可以让这些理论成为一种规则?还是SpringRunner.class?或者是让它们共存的东西?
应该有两种方法来解决这个问题:
-
SpringClassRule和SpringMethodRule <--我使用这种方法
只需使用
@RunWith(Theories.class) public class YourTest { @ClassRule public static final SpringClassRule scr = new SpringClassRule(); @Rule public final SpringMethodRule smr = new SpringMethodRule()
-
手动初始化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); }