2013-05-08 101 views
5

我正在嘗試爲特定的Activity寫一個批處理儀器測試(使用ActivityInstrumentationTestCase2),每次測試運行時我都會更改意圖。我可以用單個測試來做到這一點,只需循環停止並重新啓動活動,但這不是我想要的。一個原因是他們真的應該分開測試運行。另一個原因是,我在測試完成時使用Spoon生成報告,報告會正確地認爲我只進行了一次測試。Android上的參數化儀器測試

我想將單個測試視爲可能的無限次測試,並在每次測試運行時將數據傳遞到測試中。

不幸的是,您不能使用Theories,因爲它導致RuntimeException,其中InstrumentationTestRunner找不到我的測試。任何人都有這個運氣?

回答

0

你總是可以創建一個「測試」意圖。爲了模擬應用程序的重新啓動,可以創建一個或多個方法來重置所有測試之間的靜態變量。然後,你可以從應用程序本身內部的測試意圖內使用

assert("value", MyClass.myMethod); 
resetStatics(); 
assert(true, MyClass,myMethod); 
resetStatics(); 

我不知道多少,這會幫助你,如果在所有測試類,但我這是怎麼開始寫我自己的測試。

0

我最近發現可以給測試類添加一個public static Test suite()方法,當你運行這個測試類時,InstrumentationTestRunner將運行這個方法返回的Test。這很有用,因爲suite()可以顯式調用您的TestCase的任何構造函數,包括帶參數的構造函數。

+0

我正在尋找將數據傳遞給測試方法,而不是類 – 2013-06-03 20:56:42

+0

@ChristopherPerry爲每個要測試的值創建一個新的測試對象是標準的JUnit範例。 – 2013-06-03 22:48:42

+0

這不一定是真的。請參閱https://blogs.oracle.com/jacobc/entry/junit_theories,當我的測試方法完全相同時,僅使用不同的數據創建新的測試對象是沒有意義的。 – 2013-06-04 05:05:45