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

时间:2017-04-01 11:16:07

标签: java testing spring-boot

我正在试图弄清楚如何以正确的方式测试我的代码并将其放在中间位置。

我使用的是什么:

基于Spring-boot的Java Web应用程序。基于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控制器类

@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();
    }

}

2 个答案:

答案 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测试。有一个非常好的教程如何测试你的控制器:

https://spring.io/guides/gs/testing-web/