当前位置: 首页 > 知识库问答 >
问题:

Spring启动cucumber测试与JUnit 5将不会加载application-test.properties

江曦
2023-03-14

我无法通过cucumber测试阅读申请测试。属性文件,位于测试/资源文件夹中。cucumber测试正在读取特性,但应用程序无法启动,因为@Value注释没有从应用程序测试中提取值。属性文件(值为null)。所以所有的测试都失败了。cucumber测试在Junit 4上运行良好。为什么我的Cumber测试无法读取应用程序属性文件?

在我的一个应用程序类中,我使用@Value("${connection.string}")注释在application-test.properties文件中检索硬编码的连接字符串。连接字符串为空,因此应用程序由于实例化错误而无法启动。

属性文件位于:test/resources/application-test。属性,目标/测试类/应用程序测试。属性

这是我的应用程序类:

@SpringBootApplication
@EntityScan(basePackages = { "com.sams.payout.models.dto" })
@ComponentScan(basePackages = { "com.sams.payout", "com.samcash" })
@Slf4j
public class SampleSpringApplication {

    public static void main(String[] args) {
        SpringApplication.run(SampleSpringApplication.class, args);
        log.info("Application Started");
    }
}

以下是测试应用程序:

@CucumberContextConfiguration
@SpringBootTest(classes = SampleSpringApplication.class)
@ContextConfiguration(classes = TestHelper.class)
@ActiveProfiles("test")
public class SampleTestApp {
}

这是功能测试:

@Suite
@IncludeEngines("cucumber")
@SelectClasspathResource("features")
@ConfigurationParameters({
        @ConfigurationParameter(key = PLUGIN_PROPERTY_NAME, value = "pretty,json:target/cucumber.json"),
        @ConfigurationParameter(key = JUNIT_PLATFORM_NAMING_STRATEGY_PROPERTY_NAME, value = "long")
})
@ActiveProfiles("test")
public class SampleFT {
}

cucumber测试没有问题,因为它们使用Junit 4。

部分pom.xml:

        <dependency>
            <groupId>au.com.dius.pact.provider</groupId>
            <artifactId>junit5</artifactId>
            <version>4.1.36</version>
        </dependency>

        <dependency>
            <groupId>org.assertj</groupId>
            <artifactId>assertj-core</artifactId>
            <scope>test</scope>
        </dependency>

        <!--Functional tests -->
        <dependency>
            <groupId>com.google.code.gson</groupId>
            <artifactId>gson</artifactId>
            <version>2.9.0</version>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>io.cucumber</groupId>
            <artifactId>cucumber-java</artifactId>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>io.cucumber</groupId>
            <artifactId>cucumber-junit-platform-engine</artifactId>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>io.cucumber</groupId>
            <artifactId>cucumber-spring</artifactId>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>net.masterthought</groupId>
            <artifactId>cucumber-reporting</artifactId>
            <version>${cucumber-reporting.version}</version>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>com.azure</groupId>
            <artifactId>azure-core</artifactId>
        </dependency>

        <dependency>
            <groupId>org.junit.platform</groupId>
            <artifactId>junit-platform-suite</artifactId>
            <scope>test</scope>
        </dependency>

JUnit版本为5.8.1,spring-boot版本为2.6.7,Cucumber版本为7.3.3,使用BOM。


共有1个答案

萧宣
2023-03-14
@Suite
@IncludeEngines("cucumber")
...
@ActiveProfiles("test")
public class SampleFT {
}

在这里,ActiveProfiles什么都不做。此类不用于构建测试应用程序上下文。

@CucumberContextConfiguration
@SpringBootTest(classes = SampleSpringApplication.class)
@ContextConfiguration(classes = TestHelper.class)
@ActiveProfiles("test")
public class SampleTestApp {
}

此示例TestApp用于构建测试应用程序上下文,因为它是用CucumberContextConfiguration描述的。然而,SpringBootTest和ContextConfiguration都将尝试配置应用程序上下文。您的意思是将TestHelper添加到类中吗?

 类似资料:
  • 问题是,如果在该类之前运行任何其他测试,则2个存储库测试类将<code>无法加载该测试类的第一个测试用例的ApplicationContext。 Github上的项目“修复单元测试”分支 我使用Mongodb嵌入式数据库对一个spring-boot maven应用程序进行了一系列JUnit组件测试。 其中2个测试类在2个spring存储库上运行单元测试。 但是,由它们自己运行的测试类工作得非常好,

  • 我得堆栈: 想法2019.1.3 Springboot 2.1.6 Java 11 Maven 3.8.0 Groovy 2.5 史巴克1.3 JUnit jupiter 5.5.1 JUnit vintage 5.5.1 GMavenPlus插件2.7.1 我们想开始在Spock测试框架中编写测试。我跟着这个howto,但没有成功。当我尝试运行所有测试时,我的spock测试没有运行。 我能运行一

  • 我有Spring Boot单元测试(用@SpringBootTest注释的类),在使用我的IDE时运行良好。当我使用Maven(mvn测试)运行它们时,它们都因相同的原因而失败: 原因:组织。springframework。豆。工厂BeanCreationException:创建名为“entityManagerFactory”的bean时出错,该bean在类路径资源[my/package/conf

  • 尝试运行我的XML时出现以下错误。看起来它有问题加载类,但我有正确的类路径。 org.testng.testngexception:org.testng.testng.initializeSuitesandjarFile(testng.java:340)(org.testng.remote.abstractremotetestng.run(abstractremotetestng.java:109

  • 我有简单的测试 为什么maven和intellij不能执行Junit5测试?这方面的工作是什么?surefire版本应该已经支持JUnit5测试。