如何使用参数化运行JUnit SpringJUnit4ClassRunner?

由于重复的@RunWith注释,以下代码无效:

@RunWith(SpringJUnit4ClassRunner.class)

@RunWith(Parameterized.class)

@SpringApplicationConfiguration(classes = {ApplicationConfigTest.class})

public class ServiceTest {

}

但是,如何结合使用这两个注释?

回答:

至少有两个选项可以做到这一点:

  1. 以下http://www.blog.project13.pl/index.php/coding/1077/runwith-junit4-with-both-springjunit4classrunner-and-parameterized/

您的测试需要看起来像这样:

         @RunWith(Parameterized.class)

@ContextConfiguration(classes = {ApplicationConfigTest.class})

public class ServiceTest {

private TestContextManager testContextManager;

@Before

public void setUpContext() throws Exception {

//this is where the magic happens, we actually do "by hand" what the spring runner would do for us,

// read the JavaDoc for the class bellow to know exactly what it does, the method names are quite accurate though

this.testContextManager = new TestContextManager(getClass());

this.testContextManager.prepareTestInstance(this);

}

...

}

  1. 有一个github项目https://github.com/mmichaelis/spring-aware-rule,它建立在以前的博客上,但是以一种通用的方式添加了支持

        @SuppressWarnings("InstanceMethodNamingConvention")

@ContextConfiguration(classes = {ServiceTest.class})

public class SpringAwareTest {

@ClassRule

public static final SpringAware SPRING_AWARE = SpringAware.forClass(SpringAwareTest.class);

@Rule

public TestRule springAwareMethod = SPRING_AWARE.forInstance(this);

@Rule

public TestName testName = new TestName();

...

}

因此,您可以让一个基本类实现其中一种方法,并从中继承所有测试。

以上是 如何使用参数化运行JUnit SpringJUnit4ClassRunner? 的全部内容, 来源链接: utcz.com/qa/411471.html

回到顶部