彈簧引導web集成測試,首先需要加載測試數據。 現在我用下面的方式執行集成測試時的彈簧啓動只在整個過程中加載測試數據一次
@ActiveProfiles("test")
@Sql({"/test-schema.sql","/test-user-data.sql"})
public class FooControllerWebIntegrationTest {...}
這是確定的,但我發現,當執行每個測試方法,它會反覆加載試驗數據。請看下圖:
2015-12-30 15:58:18.398 INFO 4739 --- [ main] o.s.jdbc.datasource.init.ScriptUtils : Executing SQL script from class path resource [test-schema.sql]
2015-12-30 15:58:18.403 INFO 4739 --- [ main] o.s.jdbc.datasource.init.ScriptUtils : Executed SQL script from class path resource [test-schema.sql] in 5 ms.
2015-12-30 15:58:18.403 INFO 4739 --- [ main] o.s.jdbc.datasource.init.ScriptUtils : Executing SQL script from class path resource [test-user-data.sql]
2015-12-30 15:58:18.412 INFO 4739 --- [ main] o.s.jdbc.datasource.init.ScriptUtils : Executed SQL script from class path resource [test-user-data.sql] in 8 ms.
,但我只想要一次加載試驗時,全班同學和執行mvn package
時甚至加載一次,我怎麼可以達到這個目的?
是的,在某些控制器方法中需要檢查用戶名是否有效,也就是說它存在於用戶表中。所以我想準備一些測試數據(例如插入用戶(名稱)值('foo'))。所以我認爲不需要每次只加載一次這些測試數據就可以,並且可能花費更少的時間來完成整個測試過程。 – zhuguowei
如果您需要測試檢查用戶名是否有效,那麼您應該將數據準備爲測試的一部分,而不是在腳本中。原因是因爲該測試數據僅對該特定測試有效,而不適用於其他測試。 – Wins
是的,你是對的 – zhuguowei