小编Luc*_*ues的帖子

如何在 Gradle/Spring Boot/Kotlin 应用程序中为单元、集成和端到端测试创建不同的文件夹?

我有一个使用 Spring Boot、Gradle 和 Kotlin 构建的应用程序,它与 Kafka 和 PostgreSQL 连接。我正在使用它resources/application.yml作为配置文件。\n我想为每种测试创建一个特定的包:单元、集成和端到端,但现在我有一个仅用于单元测试的包。做这个的最好方式是什么?我正在使用 Junit5。

\n

我想要这样的东西:

\n
application/\n\xe2\x94\x9c\xe2\x94\x80 src/\n\xe2\x94\x82  \xe2\x94\x9c\xe2\x94\x80 e2e/\n\xe2\x94\x82  \xe2\x94\x9c\xe2\x94\x80 integration/\n\xe2\x94\x82  \xe2\x94\x9c\xe2\x94\x80 main/\n\xe2\x94\x82  \xe2\x94\x9c\xe2\x94\x80 test/\nbuild.gradle.kts\ngradlew\ngradlew.properties\nsettings.gradle.kts\n
Run Code Online (Sandbox Code Playgroud)\n

另外,我希望在运行单元测试时我的应用程序不要连接到 Kafka 或 Postgres,但在运行集成测试时我希望它这样做。我怎样才能做到这一点?

\n

我尝试了 Kafka 的配置,但没有成功:

\n
application/\n\xe2\x94\x9c\xe2\x94\x80 src/\n\xe2\x94\x82  \xe2\x94\x9c\xe2\x94\x80 e2e/\n\xe2\x94\x82  \xe2\x94\x9c\xe2\x94\x80 integration/\n\xe2\x94\x82  \xe2\x94\x9c\xe2\x94\x80 main/\n\xe2\x94\x82  \xe2\x94\x9c\xe2\x94\x80 test/\nbuild.gradle.kts\ngradlew\ngradlew.properties\nsettings.gradle.kts\n
Run Code Online (Sandbox Code Playgroud)\n

我还创建了一个注释来模拟所有 Kafka 消费者和生产者(这有效,但我不想在每个测试类中添加此注释)

\n
spring\n    autoconfigure:\n        exclude: org.springframework.boot.autoconfigure.kafka.KafkaAutoConfiguration\n
Run Code Online (Sandbox Code Playgroud)\n

我的消费者看起来像这样:

\n
@MockBeans(MockBean(MyConsumer::class), MockBean(MyProducer::class))\nannotation class MockKafka\n\n@SpringBootTest\n@MockKafka\nclass MyAwesomeTest { // tests here }\n
Run Code Online (Sandbox Code Playgroud)\n

我的 application.yaml 文件如下所示:

\n
@Component\nclass MyConsumer() {\n    private val logger = …
Run Code Online (Sandbox Code Playgroud)

gradle kotlin spring-boot junit5 spring-kafka

2
推荐指数
1
解决办法
1202
查看次数

标签 统计

gradle ×1

junit5 ×1

kotlin ×1

spring-boot ×1

spring-kafka ×1