[英]Android test suite using robolectric?
我正在嘗試搜索有關如何為使用Robolectric的測試類運行測試套件的示例,例如,我有此類:
@Config(sdk = 16, manifest = "src/main/AndroidManifest.xml")
@RunWith(RobolectricTestRunner.class)
public class RestaurantModelTest {
//setUp code here...
@Test
public void testFindByLocation() throws Exception {
//test code here
}
}
類RestaurantModelTest
所有單元測試和斷言都可以通過,但是我還有另一個類可以稱之為XModelTest
(所有聲明和單元測試都可以通過。
我找不到有關如何使用robolectric使用測試套件的任何教程/示例。
是否應該在我的RestaurantModelTest和XModelTest所在的同一包中完成? 如果不在哪里?
我也嘗試過使用JUnit的TestSuite進行此操作,但是會出現很多問題,我的TestSuite擴展類是否應該擴展TestSuite超級類?
如果有人可以使用我的RestaurantModelTest
和XModelTest
類給我一個簡短的例子,那就太好了。
我相信,我也回答了您的第二個問題,部分涵蓋了這個問題- 無法運行android測試套件:線程“ main”中的異常
以下是使用Robolectric編寫套件的方法:假設我們有2個模型類。
CartModel.java
public class CartModel {
public float totalAmount;
public int products;
public void addToCart(float productPrice) {
products++;
totalAmount += productPrice;
}
}
和RestaurantModel.java
public class RestaurantModel {
public int staff;
public void hire(int numberOfHires) {
staff += numberOfHires;
}
}
讓我們為它們編寫一些虛擬測試:
CartModelTest.java
@RunWith(RobolectricGradleTestRunner.class)
@Config(constants = BuildConfig.class, sdk=21)
public class CartModelTest {
@Test
public void addToCart() throws Exception {
CartModel cartModel = new CartModel();
assertEquals(0, cartModel.totalAmount, 0);
assertEquals(0, cartModel.products);
cartModel.addToCart(10.2f);
assertEquals(10.2f, cartModel.totalAmount, 0);
assertEquals(1, cartModel.products);
}
}
RestaurantModelTest.java
@RunWith(RobolectricGradleTestRunner.class)
@Config(constants = BuildConfig.class, sdk=21)
public class RestaurantModelTest {
@Test
public void hire() throws Exception {
RestaurantModel restaurantModel = new RestaurantModel();
assertEquals(0, restaurantModel.staff);
restaurantModel.hire(1);
assertEquals(1, restaurantModel.staff);
}
}
現在是最后一步-將它們組合到一個ModelsTestSuite.java
:
@RunWith(Suite.class)
@Suite.SuiteClasses({
RestaurantModelTest.class,
CartModelTest.class
})
public class ModelsTestSuite {}
要運行-只需右鍵單擊ModelsTestSuite
,然后單擊“運行ModelsTestSuite”。 而已!
NB! 在Android Studio 2.0 3b中,您必須禁用即時運行(首選項->構建,執行,部署->即時運行->啟用即時運行-取消選中),以便運行Robolectric測試(以避免java.lang.RuntimeException: java.lang.ClassNotFoundException: Could not find a class for package: <package name> and class name: com.android.tools.fd.runtime.BootstrapApplication
)。
希望對您有所幫助
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.