Spring Boot junit 测试安全应用程序

Posted

技术标签:

【中文标题】Spring Boot junit 测试安全应用程序【英文标题】:Spring Boot junit testing secured application 【发布时间】:2018-07-22 00:29:19 【问题描述】:

我在我的应用程序中使用 Spring Security OAuth2。当我尝试使用 JUnit 测试来测试服务层时,我收到了这个错误:

org.springframework.security.authentication.AuthenticationCredentialsNotFoundException: 在 SecurityContext 中找不到 Authentication 对象

你能告诉我如何解决它吗?

这是我的测试类:

@RunWith(SpringRunner.class)
@SpringBootTest
@Transactional
public class FooServiceTest 

    @Autowired
    private FooService service;

    @Test
    public void someTest()     
        service.findFoo(1L);
    

【问题讨论】:

检查baeldung.com/oauth-api-testing-with-spring-mvc 【参考方案1】:

使用@WithMockUser

@WithMockUser(username = "usertest", password = "password", roles = "USER")
@RunWith(SpringRunner.class)
@SpringBootTest
@Transactional
public class FooServiceTest 

    @Autowired
    private FooService service;

    @Test
    public void someTest()     
        service.findFoo(1L);
    


【讨论】:

以上是关于Spring Boot junit 测试安全应用程序的主要内容,如果未能解决你的问题,请参考以下文章

Spring Boot:使用 Junit 模拟具有安全上下文的用户身份验证

JUnit 测试 MongoDB Spring Boot

为啥在 Spring Boot 应用程序的 Junit 测试中应用程序属性中的属性不可用?

如何 JUnit 测试 Spring-Boot 的 Application.java

在 JUnit 5 测试中模拟 Spring Boot 2 应用程序的自动装配依赖项

如何在spring-boot应用程序的junit中调用ApplicationContextInitializer