在我的一个测试类中,我使用:
//Make a security context
SecurityContext securityContext = mock( SecurityContext.class );
SecurityContextHolder.setContext( securityContext );
然后我在上面设置了一些东西。
在另一个测试课程中,我因为那个模拟器仍在那里而失败。我在所有测试类上添加了@DirtiesContext
但仍然会发生。当我检查第二类中的安全上下文的类时,它表示它是一个模拟。
如何正确重置课程之间的所有内容?
第一个类运行为:
@RunWith( SpringJUnit4ClassRunner.class )
@SpringBootTest(
webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT
)
@DirtiesContext
第二个是:
@RunWith( SpringJUnit4ClassRunner.class )
@DirtiesContext
答案 0 :(得分:1)
单词" context"让你感到困惑。
这是两个截然不同的背景"。
@DirtiesContext
与测试ApplicationContext
相关;然而,SecurityContext
是Spring Security的一部分,与ApplicationContext
无关。
因此,如果您在Spring Security的SecurityContext
中设置SecurityContextHolder
,那么一旦您的测试完成,您就可以将其删除。
后者需要您自己动手工作。如果您希望Spring Security的测试支持能够处理所有事情,那么您可能会对@WithMockUser
中的spring-security-test
及相关测试支持感到满意。