如何将Spring WithMockUser注释与TestNG一起使用



我正在使用Spring Boot进行Web应用程序,使用TestNG进行单元测试。以下是我正在尝试的单元测试

@ContextConfiguration
public class AuthorizerTest extends AbstractTestNGSpringContextTests {
    @InjectMocks
    private Authorizer authorizer = new Authorizer();
    @Mock
    private PermissionRuleRepository permissionRuleRepository;
    @BeforeMethod
    public void setUp() throws Exception {
        MockitoAnnotations.initMocks(this);
    }
    @Test
    @WithMockUser
    public void testCheckPermission() throws Exception {
        try {
            authorizer.checkPermission(null, PermissionLevel.Type.ACCOUNT_OTHER);
            fail();
        } catch (AccessDeniedException ade) {
            //
        }
    }
}

authorizer.checkPermission内部使用 SecurityContext 获取当前用户名。但是在调试时,authentication对象是null 。不知道为什么在使用WithMockUser时没有填充它。

您可以尝试将以下注释添加到测试类中。这对我有用。

@TestExecutionListeners({WithSecurityContextTestExecutionListener.class})

可以在此处找到一个示例:https://github.com/sbrannen/spring-events/blob/master/src/test/java/com/sambrannen/spring/events/SimpleScenarioTestNgTests.java

相关内容

  • 没有找到相关文章

最新更新