我正在试图弄清楚如何以正确的方式测试我的代码并将其放在中间位置。
我使用的是什么:
基于Spring-boot的Java Web应用程序。基于Java的配置。测试
我想要的是什么:
我想以正确的方式管理我的测试。我有一个@RestController
注释类,有两个对象,我想在测试中改变它们。它是实体提供程序类BooksService
和数据库配置类DBConfig
。我想以简单和正确的方式在我的测试中更改这些类的实现。我不知道如何正确地做到这一点。
我需要什么样的帮助:
很抱歉,如果我的想法有点混乱,我在Java EE开发方面相当新,但仍然没有很好地理解所有基本主题。
修改
这是一些代码
DemoApplication
上课
@SpringBootApplication
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
BooksController
控制器类
@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();
}
}
答案 0 :(得分:2)
在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
。这个类负责覆盖我想要为测试目的而改变的行为。
这就是这样的课程的样子:
@Configuration
public class IntegrationTestsConfiguration {
@Bean
@Primary
public BooksProvider booksProvider() {
// your custom instantiation code goes here
}
}
换句话说,我使用过“主豆方法”。
自Spring Boot 1.4.x以来,有@MockBean
个注释可用,直到现在我还没有机会使用它,但肯定值得一试。
进一步阅读:
答案 1 :(得分:1)
看看Spring Boot测试。有一个非常好的教程如何测试你的控制器: