Java Spring Boot集成测试数据库修改和认证

时间:2017-06-09 01:18:32

标签: java spring authentication spring-boot integration-testing

我有一个测试控制器的集成测试。我传递了一个请求并得到了回复,测试通过了。但是,在发出请求之前,我必须向/authenticate端点发出请求以检索令牌,以便将其放入请求的标头中。我有两个问题

  1. 我在本地使用的用户名和密码验证了开发者LDAP服务器。随着应用程序部署到更高的环境,LDAP端点将更改为相应的级别。因此,在高于DEV的环境中,集成测试将失败,因为用户名/密码组合不起作用。那么获取用户名/密码以匹配环境的最佳方法是什么?有没有更好的方法来执行此操作,例如强制Spring完全忘记身份验证?
  2. 集成测试测试所有控制器的端点,如/add/get等。不幸的是,这实际上修改了数据库(预期)。有没有办法运行这些测试,但实际上修改数据库?

1 个答案:

答案 0 :(得分:0)

1)在单元测试类中,如果要使用完全不同的属性文件测试,请使用@TestPropertySource(properties = {"security.basic.enabled=false"})覆盖您的安全设置或@TestPropertySource(locations="classpath:test.properties")

2)您可以使用模拟,或者如果您不想在集成测试中使用模拟,那么您必须在每次测试后使用以下内容清理数据库:

@After      
public void tearDown() {
     cleanupDatabase();
 }