找不到@SpringBootConfiguration

时间:2019-10-16 23:00:36

标签: java spring spring-boot spring-test

我想为此私有方法创建一个JUnit测试:

@Component
public class ReportingProcessor {

    @EventListener
    private void collectEnvironmentData(ContextRefreshedEvent event) {
    }
}

我尝试过:

@ContextConfiguration
@SpringBootTest
public class ReportingTest {

    @Autowired
    ReportingProcessor reportingProcessor;

    @Test
    public void reportingTest() throws Exception {

        ContextRefreshedEvent contextRefreshedEvent = PowerMockito.mock(ContextRefreshedEvent.class);
        Whitebox.invokeMethod(reportingProcessor, "collectEnvironmentData", contextRefreshedEvent);

    }
}

运行代码时,我得到:

java.lang.IllegalStateException: Unable to find a @SpringBootConfiguration, you need to use @ContextConfiguration or @SpringBootTest(classes=...) with your test

您知道我可以解决此问题吗?

2 个答案:

答案 0 :(得分:1)

如果您没有使用@SpringBootApplication和已知的main()方法进行注释的类,则需要将组件类的目标放在@SpringBootTest注释上。

通常,我在构建库时执行此操作,对于某些特定情况,我需要具有spring上下文来对它们进行单元测试。

只需将其添加到您的代码中即可:

artifactStore

就做到了,测试正在运行。

编辑:不知道您要精确测试什么,只是想展示如何解决所得到的错误。

答案 1 :(得分:0)

您应该将@RunWith@SpringBootTest一起使用:

@RunWith(SpringRunner.class)
@SpringBootTest
public class ReportingTest {

    @Autowired
    ReportingProcessor reportingProcessor;

    @Test
    public void reportingTest() throws Exception {

        ContextRefreshedEvent contextRefreshedEvent = PowerMockito.mock(ContextRefreshedEvent.class);
        Whitebox.invokeMethod(reportingProcessor, "collectEnvironmentData", contextRefreshedEvent);

    }
}