我想測試一個類像嘲諷配置值測試使用的彈簧
@Controller
public class FailureController {
@Value("#{configValues.defaultRedirectUrl}")
private String defaultRedirectUrl;
public FailureController (String defaultRedirectUrl) {
this.defaultRedirectUrl = defaultRedirectUrl;
}
...
的問題是,我不能沒有測試類創建一個特殊的構造測試這個類(如上面)類時,它最終將初始化中的defaultRedirectUrl
。
如何在測試過程中無需創建構造函數(即將來自spring上下文)來測試它。我的主要目標是在運行測試時在沒有構造函數的情況下初始化FailureController
中的值。
是否有可能以某種方式Spring上下文測試期間被加載和初始化在FailureController 領域這是我一直在做,但它不工作,defaultRedirectUrl
保持FailureController
null
。
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = { "/applicationContext-test.xml" })
public class FailureControllerTest {
@Autowired
FailureController failureController;
的applicationContext-的test.xml
...
<bean id="failureController" class="se.synergica.watchtower.controllers.FailureController">
</bean>
<import resource="spring-config-test.xml" />
</beans>
謝謝。 al
謝謝你,我想,我不明白你的意思...... AClassToBeTest中的Url字段會被初始化嗎?我猜這不會。不是@ContextConfiguration用於僅爲測試加載上下文即AClassToBeTestTest,而不是用於正在測試的類即AClassToBeTest?我已經編輯了一些我的問題。 – Deam
重點在於你有一個由測試應用程序上下文實例化的AClassToBeTest。所以應該在applicationContext-test.xml中定義AClassToBeTest。你將這個實例注入到你的單元測試中,它應該像在正常運行時一樣被初始化。與運行時唯一不同的是,您可以使用不同的彈簧上下文,您可以在其中加載用於測試值的不同屬性文件或類似的東西。 – rompetroll
由於某種原因,它不起作用。你能幫我嗎?我編輯了這個問題。 – Deam