这是我的考试课程
@RunWith(SpringRunner.class)
@SpringBootTest(classes = TestSpringBootConfiguration.class)
@TestExecutionListeners({
DependencyInjectionTestExecutionListener.class,
CleanTablesTestExecutionListener.class,
TransactionDbUnitTestExecutionListener.class
})
public class Test extends TestBase {
@Test
@DatabaseSetup({"Test-i-01.xml"})
@ExpectedDatabase(value = "Test-e-01.xml", assertionMode = DatabaseAssertionMode.NON_STRICT_UNORDERED)
public void when_updateX_thenSaveX() {
given()
.contentType(ContentType.JSON).body(input("i-01"))
.auth().principalWithCredentials("test.user", "user")
.when()
.put(ACTION_PATH)
.then()
.statusCode(200);
}
@Test
@DatabaseSetup({"Test-i-02.xml"})
@ExpectedDatabase(value = "Test-e-02.xml", assertionMode = DatabaseAssertionMode.NON_STRICT_UNORDERED)
public void when_updateXY_thenSaveXY() {
given()
.contentType(ContentType.JSON).body(input("i-02"))
.auth().principalWithCredentials("test.user", "user")
.when()
.put(ACTION_PATH)
.then()
.statusCode(200);
}
}
两个测试都设置了授权.auth().principalWithCredentials("test.user", "user")
如果我分别运行每个测试,则设置的授权将相应地由username = 'test.user'
接管,但问题是我一起运行测试时,因为只有一个测试才具有授权集(username = 'test.user'
),而其他测试将适用username = 'anonymousUser'
我用于身份验证的bean是:
@Bean
@Scope(scopeName = "prototype", proxyMode = ScopedProxyMode.INTERFACES)
public Authentication authentication() {
return SecurityContextHolder.getContext().getAuthentication();
}
如果您有任何想法,可以如何为所有测试设置身份验证?谢谢。