我正在寻找一种简化以下代码的方法。

@WebAppConfiguration
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = {
        // My configuration classes
})
public class MyServiceTest {
    @Autowired
    private MyService service;

    @Test
    public void myTest() {
        Assert.assertTrue(service != null);
    }
}


我有许多配置类,并且不想将它们放入每个测试类中。所以我有了创建自己的注释的想法:

@WebAppConfiguration
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = {
        // My configuration classes
})
public @interface IntegrationTests {
}


我尝试通过以下方式使用它:

@IntegrationTests
public class MyServiceTest {
    @Autowired
    private MyService service;

    @Test
    public void myTest() {
        Assert.assertTrue(service != null);
    }
}


但这是行不通的。任何想法?

最佳答案

您可以将这些注释放在超类上:

@WebAppConfiguration
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = {
        // My configuration classes
})
public abstract class AbstractIntegrationTest { ... }




public class MyServiceTest extends AbstractIntegrationTest { ... }


这种方法还允许您在基类中声明常见的@Autowired依赖项,并在具体测试中自定义@ContextConfiguration类。

10-07 19:42
查看更多