本文介绍了Java注解——代码简化的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在寻找一种方法来简化以下代码.

I am looking for a way to simplify the following code.

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

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

我有很多配置类,我不想把它们放到每个测试类中.所以我有了创建自己的注释的想法:

I have many configuration classes and I don't want to put them into each test class. So I got the idea to create my own annotation:

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

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

I try to use it in the following way:

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

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

但它不起作用.有什么想法吗?

But it doesn't work. Any idea?

推荐答案

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

You can place these annotation on a superclass:

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

.

public class MyServiceTest extends AbstractIntegrationTest { ... }

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

This approach also allows you to declare common @Autowired dependencies in the base class and customize @ContextConfiguration classes in concrete tests.

这篇关于Java注解——代码简化的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

07-23 01:58
查看更多