Spring Boot + CloudFoundry +测试单元问题

时间:2016-11-28 15:09:22

标签: spring junit spring-boot cloudfoundry

我想为我的应用程序进行单元测试。我正在使用Spring Boot和CloudFoundry。 当我在没有云连接的情况下启动“测试文件”时,我的日志中出现错误: “引起:org.springframework.cloud.CloudException:找不到合适的云连接器”

我试图使用:

@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment=WebEnvironment.RANDOM_PORT, properties = {
        "spring.cloud.config.enabled:false" })

如何排除/关闭云以进行单元测试?

谢谢!

3 个答案:

答案 0 :(得分:0)

我通常在特定于CF的配置上添加@Profile("cloud")cloud个人资料将自动应用于CF env。

答案 1 :(得分:0)

您的应用是通过引导启动器获得Spring Cloud Connectors(例如org.springframework.boot:spring-boot-starter-cloud-connector),还是您对连接器库(例如org.springframework.cloud:spring-cloud-spring-service-connector)有明确的依赖关系?

如果您使用的是Boot starter,则除非cloud Spring profile is active,否则不应启用云连接器autoconfig。运行测试时,请确保配置文件未处于活动状态。

如果要在测试中明确禁用云连接器autoconfig,proper syntax将是:

@SpringBootTest(webEnvironment=WebEnvironment.RANDOM_PORT, properties = {
    "spring.cloud.enabled=false" })

答案 2 :(得分:0)

在本地环境中运行时会出现此问题 代码中的问题

public byte[] zipBytes(final List<SomeDTO> listDTOS) throws IOException {

ByteArrayOutputStream baos = new ByteArrayOutputStream();
ZipOutputStream zos = new ZipOutputStream(baos);
SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy");

try {

    for (SomeDTO dto: listDTOS) {

        ZipEntry entry = new ZipEntry("Test");
        zos.putNextEntry(entry);
        zos.write(dto.someByteArrayOutputStreamProperty.toByteArray());

        zos.closeEntry();
        zos.finish();
        zos.flush();
    }
} catch (IOException io) {
    LOGGER.error("Error generate zip" + io.getLocalizedMessage(), io);
} finally {
    zos.close();
}
return baos.toByteArray();
}

已解决的代码

CloudConfig extends ApplicationCloudConfig {
        // local and cloud configuration code seperated with @Profile.
    }