春季测试配置文件:如何仅加载相关的测试上下文资源

时间:2018-09-28 06:36:54

标签: spring spring-boot spring-data spring-data-mongodb spring-test

这是我的application.properties文件:

spring.data.mongodb.host: localhost
spring.data.mongodb.port: 27017

spring.datasource.url: jdbc:postgresql://localhost:5432/frontoffice
spring.datasource.username: frontoffice
spring.datasource.password: password
spring.datasource.driverClassName: org.postgresql.Driver

application.defaultLanguage: ca_ES

这是我的考验:

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

    @Autowired
    private GridFsTemplate gridFsTemplate;

    @Test
    public void storeFile() throws IOException {
        Path path = Paths.get(TestResources.CompatibleMatch.CSV_DOCUMENT.getPath());
        InputStream is = Files.newInputStream(path);

        this.gridFsTemplate.store(
          is,
          path.getFileName().toString(),
          "text/plain",
          null
        );
    }

    @Test
    public void getFile() {
        Path path = Paths.get(
          TestResources.CompatibleMatch.CSV_DOCUMENT.getPath()
        );

        GridFSFile gridFsFile = this.gridFsTemplate.findOne(
          Query.query(
            Criteria
              .where("filename")
              .is(path.getFileName().toString())
            )
          );
        assertEquals(path.getFileName().toString(), gridFsFile.getFilename());
    }

}

如您所见,我仅在测试spring-data-mongodb相关类。

重点是,当我运行此测试时,Spring试图加载与我的具体测试无关的所有资源,配置。

我只想加载与mongo相关的资源,并删除其他资源。

此外,我想在我的*.properties中放入多个src/test/resources文件,每种文件对应一个上下文。

我知道存在ActiveProfiles注释,但是如何注释第三方库资源? spring-data-mongodb试图加载其@Configuration类,但我无法更改此行为。

我希望我解释得很好。

0 个答案:

没有答案