2013-02-22 45 views
1

我寫了一個實用工具類,它從註釋模型生成Wicket組件,並將它們添加到作爲方法參數傳入的MarkupContainer中。如何創建一個Wicket MarkupContainer在JUnit中用於測試實用程序類?

對於此生成器的單元測試,需要MarkupContainer。我試着這樣說:

final MarkupContainer container = 
    new MarkupContainer("container") { 
     private static final long serialVersionUID = 1L; 
    }; 

這將編譯,但在運行測試拋出此異常:

org.apache.wicket.WicketRuntimeException: 
    There is no application attached to current thread main 

所以MarkupContainer容器要求沒有定義構造函數的參數會對環境造成額外的對象。從文檔中我無法弄清楚它們是什麼。

我看着WicketTester,但沒有找到使其生成MarkupContainer的方法。

您能否提出一種生成MarkupContainer實現以在JUnit測試中使用的方法,最好不必創建完整的Web應用程序?

回答

0

Wicket組件通常需要綁定到當前線程的應用程序。看看(Base)WicketTester在內部做了什麼。最簡單的解決方案,能夠創建一個WebMarkupContainer是通過實例化一個WicketTester - 它負責後臺初始化的:

@Test 
public void testWmc() throws Exception { 
    WicketTester tester = new WicketTester(); 
    new WebMarkupContainer("id"); 
} 
+0

加上添加的Maven依賴的Servlet API與測試範圍工作的,謝謝。 – Kwebble 2013-02-22 12:36:55

相關問題