gpt4 book ai didi

java - 如何在基于 Spring-boot 的应用程序的测试中更改基于 Java 的配置?

转载 作者:行者123 更新时间:2023-11-28 21:04:12 27 4
gpt4 key购买 nike

我试图弄清楚如何以正确的方式测试我的代码,但卡在了中间的某个地方。

我用的是什么:

基于 Spring-boot 的 Java 网络应用程序。基于 Java 的配置。测试。

我想要的:

我想以适当的方式管理我的测试。我有一个 @RestController 注释类,它有两个对象,我想在测试中更改它们。它是一个实体提供程序类 BooksService 和数据库配置类 DBConfig。我想以一种简单而正确的方式在我的测试中更改这些类的实现。我不知道如何正确地做到这一点。

我需要什么样的帮助:

  • 实现此方法的工作项目是最可取的。不要花太多话,工作代码是我理解它的最佳方式。
  • 如果那里没有完整的项目,那么带有描述的代码片段也会很有用。
  • 有关 1) 基于 Java 的配置 2) 为测试替换基于 Java 的配置的一些优秀而简单的教程的链接。

抱歉,如果我的想法有点困惑,我是 Java EE 开发的新手,仍然没有很好地理解所有基本主题。

编辑:

代码如下

DemoApplication

@SpringBootApplication
public class DemoApplication {

public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}

BooksController Controller 类

@RestController
public class BooksController {

@Autowired
BooksProvider booksProvider;

@CrossOrigin
@RequestMapping("/books")
String allBooks() throws Exception {

return this.booksProvider.fetchAllBooksAsTring();
}

}

BooksProvider 服务类

public class BooksProvider {

public String fetchAllBooksAsTring() {
return "[\"Marting Iden\", \"Capital\", \"Strong Wind\"]";
}
}

SimpleConfiguration 配置类

@Configuration
public class SimpleConfiguration {

@Bean
public BooksProvider booksProvider() {
return new BooksProvider();
}

}

最佳答案

在 Spring Boot 1.3.x 中,我成功地使用了以下方法:

@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration({Application.class, IntegrationTestsConfiguration.class})
@ActiveProfiles({"it"})
@DirtiesContext(classMode = AFTER_EACH_TEST_METHOD)
public class MyIT {
// tests
}

正如您所见,除了 Application.class(用 @SpringBootApplication 注释的)之外, 中还有 IntergrationTestsConfiguration.class >@SpringApplicationConfguration。此类负责覆盖我想更改其行为以用于测试目的的 bean。

类是这样的:

@Configuration
public class IntegrationTestsConfiguration {

@Bean
@Primary
public BooksProvider booksProvider() {
// your custom instantiation code goes here
}
}

换句话说,我使用了“主要 beans 方法”。

自 Spring Boot 1.4.x 以来,@MockBean 注释可用,直到现在我还没有机会使用它,但肯定值得一试。

进一步阅读:

关于java - 如何在基于 Spring-boot 的应用程序的测试中更改基于 Java 的配置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43156131/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com