在什么情况下@SpringBootTest需要可选的“类”元素?

时间:2019-01-23 17:25:19

标签: spring spring-boot junit junit4 spring-boot-test

请先参见this doc。 我有一个带有几个测试类的应用程序,它扩展了像这样的抽象类:

    public class TestClass extends AbstractClass {

        @Autowired
        private ClassToTest classToTest;
        ...
        //Some tests

抽象类的设置如下:

@SpringBootTest
@RunWith(SpringRunner.class)
@ActiveProfiles("test")
public abstract class AbstractClass {

    @BeforeClass
    public static void initialize() {
        //Section 1
    }

    @TestConfiguration
    public static class TestSpringConfiguration {
        @Bean
        public SomeBean someBean() {
            //Section 2
        }
        ...

每次运行测试都失败,我可以在第1节中看到一个断点,但在第2节中却看不到。我尝试了几种类似的设置,包括扩展/不扩展,并且将@SpringBootTest移动到我的TestClass等,祝您好运。然后我碰到了this issue,并尝试了以上所见:

@SpringBootTest(classes=AbstractClass.TestSpringConfiguration.class)

它有效!

但是,这让我感到奇怪,为什么有效?我在网上看到许多示例,这些示例使用带有@TestConfiguration的静态内部类,而没有设置classes元素。实际上,除了文档之外,我几乎看不到提到的元素太多。现在,这才是真正的关键:我有一个单独的应用程序,几乎在所有方面都与所讨论的应用程序相同,但是它确实可以在没有元素的情况下运行。

有人对这可能会影响什么有任何线索吗?这不应该是自动的吗?

我使用的是Spring Boot 1.5(不是我的选择,是的,我知道上面链接的文档是2.x),Spring 4.3和JUnit 4。

0 个答案:

没有答案