当我在Spring Boot应用程序中启用Actuators时,我的Junit测试失败并出现NullPointer异常.执行器工作正常,在我的pom.xml文件中添加了执行器工件之前,测试工作正常.
好像是
@MockBean
MailSender mailSender;
Run Code Online (Sandbox Code Playgroud)
造成了这个问题
我的pom.xml文件:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
Run Code Online (Sandbox Code Playgroud)
我的测试:
@RunWith(SpringRunner.class)
@SpringBootTest
@AutoConfigureTestDatabase
public class MailServiceTest extends CommonServiceTest {
@Autowired
MailService mailService;
@MockBean
MailSender mailSender;
private static final String TO = "user@test.com";
private static final String SUBJECT = "Subject";
private static final String TEXT = "Text";
private static final String TOKEN = "1234";
@Value("${app.email.from}")
private String fromEmail;
@Value("${app.email.support}")
private String supportEmail;
private ArgumentCaptor<SimpleMailMessage> simpleMailMessageCaptor;
@Override
public void initObjects() {
simpleMailMessageCaptor = ArgumentCaptor.forClass(SimpleMailMessage.class); …Run Code Online (Sandbox Code Playgroud) 我想保护我的应用程序,以便任何经过admin完全身份验证的人都可以访问某些 URL,并且管理员用户也可以访问 URL,并且也完全经过身份验证。
但是现在,我无法设法找到fullyAuthenticaded() AND hasrole()一起使用的方法。
@Override
public void configure(HttpSecurity http) throws Exception {
http
.requestMatchers()
.antMatchers("/api/**", "/health")
.and()
.authorizeRequests()
.antMatchers("/health").permitAll()
.and()
.authorizeRequests()
.antMatchers("/api/get-data").fullyAuthenticated()
.and()
.authorizeRequests()
.anyRequest().hasRole("ADMIN");
}
Run Code Online (Sandbox Code Playgroud)