使用Spring Profiles运行gradle任务(集成测试)

时间:2017-05-30 08:14:20

标签: java spring gradle profiling spring-profiles

需要使用弹簧配置文件通过gradle运行测试。

gradle clean build

我添加了任务:

task beforeTest() {
    doLast {
      System.setProperty("spring.profiles.active", "DEV")
    }
}

test.dependsOn beforeTest

我的测试定义是:

@RunWith(SpringRunner.class)
@SpringBootTest
@ActiveProfiles("TestProfile")
public class SomeTest {

但这种结构并不适合我。

Gradle运行测试。

3 个答案:

答案 0 :(得分:7)

我认为您想要在运行时/测试JVM中设置系统属性,但是您在构建时JVM(即Gradle守护程序)中错误地设置了系统属性。

请参阅Test.systemProperty(String, Object)

例如:

test {
    systemProperty 'spring.profiles.active', 'DEV'
}

...还有另外一个关于你的尝试的说明。请注意,任务具有doFirstdoLast方法,因此您不需要为尝试的内容单独执行任务。

答案 1 :(得分:0)

想知道这是一个很晚的回复吗?但是我遇到了类似的情况。

  1. 在springboot src / test / *文件夹中使用@Profiles。
  2. @ActiveProfiles实际上已激活(在查看日志时),但是在使用gradle test执行时,它不使用@Profile。但是,执行JUnit测试时,@ Profile在Eclipse编辑器中正常工作。

所以最后我发现@Profile必须位于 src / main / * 文件夹中。 Gradle测试似乎优先于/ src / main而不是/ src / test。这样,我的@Profile(“ test”)被转换为@Profile(“!test”)。内置的gradle中没有添加spring.profiles.active。

Negating profile

答案 2 :(得分:-1)

这对我有用:

test {
    doFirst {
        systemProperty 'spring.profiles.active', 'ci'
    }
}

现在当我gradlew test时,它会使用ci个人资料。