2017-06-12 85 views
1

在啓動testenvironment時,是否可以在不使用@Scope的情況下更改組件的範圍?SpringBoot更改測試範圍

@Service 
@Scope(${service.scope}) 
public class MyService{} 

test.properties

service.scope=prototype 

prod.properties

service.scope= 

我們不想polute用@Scope我們只測試所需要的服務。 有沒有更好的方法來改變測試中的bean範圍?我們沒有彈簧雲,所以我們不能使用RefreshScope刷新範圍。

+0

你爲什麼需要改變測試範圍?如果你的測試需要一個乾淨的應用上下文來運行,你有沒有試過'@ DiritesContext'? –

+0

我們希望並行執行多個測試,並更改測試互不干擾的注入路徑。如果我們有一個單身人士,我們會有競爭條件。 –

回答

0

令人遺憾的是,我認爲我的解決方案是針對此特定問題在測試環境中更改範圍的唯一「酷」方案。

謝天謝地@DirtiesContext(感謝Darren :))爲我的問題做了訣竅,我改變了每個測試的範圍。在順序模式下執行時間稍長一點,但並行工作正常。

@Service 
@DirtiesContext(classMode=ClassMode.AFTER_EACH_TEST_METHOD) 
public class MyService{}