如何搭建robolectric環(huán)境
最近在學(xué)習(xí)測試驅(qū)動開發(fā)(Test-Driven Development),測試驅(qū)動開始是極限編程的一種方式,提倡在真正編寫代碼之前先根據(jù)需求編寫測試代碼(當然這個測試代碼是不可能通過的),然后根據(jù)測試代碼來編寫正式的代碼,編寫的正是代碼要讓一步步的讓測試代碼通過。如果在Android開發(fā)中也能使用測試驅(qū)動開發(fā),將會大大加快我們的開發(fā)速度??墒俏覀兌贾繟ndroid的單元測試實在令人頭疼,他的每一個測試都要求的真機或者模擬器上運行,這將會大大拖慢我們的測試速度。
robolectric是一個Android的單元測試框架,這個框架的迷人在于,他能讓你的Android代碼運行在jvm(不是Android的虛擬機)上,這就意味著你在做單元測試的時候,不必要將你的apk安裝到機器上運行了,這將會大大較少我們的測試時間。(Wouldn't it be nice to run your Android tests directly from inside your IDE?)
robolectric官網(wǎng)
在搭建robolectric個過程中我遇到了很多困難,并且網(wǎng)上的解決方案也比較上,所以不得不自己摸索,今天在這里記錄一下robolectric環(huán)境的搭建
1.開發(fā)環(huán)境android-studio
2.所需jar包,下載地址
3.導(dǎo)入jar包之后,需要修改一下項目的配置:在Android studio的左下角有一個build variants,點開之后將test artifact改為Unit tests
4.編寫測試代碼:
- @RunWith(RobolectricGradleTestRunner.class)
- @Config(constants = BuildConfig.class)
- public class MyTest {
- @Test
- public void testTest() {
- MainActivity mainActivity = Robolectric.setupActivity(MainActivity.class);
- TextView textView = (TextView) mainActivity.findViewById(R.id.text);
- assertEquals(textView.getText(), "Hello World!1");
- }
- }
這里注意測試類上面的注解
5.運行這個單元測試方法,***運行的時候可能會下載一些東西,等他下載完成之后,就會想平時的junit一樣執(zhí)行