国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Android自動化測試-從入門到入門(2)Testing APIs

Meathill / 2512人閱讀

摘要:標識一個測試方法。附錄自動化測試從入門到入門自動化測試從入門到入門自動化測試從入門到入門入門自動化測試從入門到入門自動化測試從入門到入門的測試自動化測試從入門到入門會玩的自動化測試從入門到入門

根據該系列文章的第一篇:Hello Testing,大家已經對整個自動化測試運行流程有了一個基本的了解,接下來我們該集中精力關注具體的腳本實現了!在具體實現之前,我們先來了解一下Android提供的對于自動化測試的一些支持。

AndroidJUnitRunner

根據Android官網的說法,

The AndroidJUnitRunner class is a JUnit test runner that lets you run JUnit 3 or JUnit 4-style test classes on Android devices, including those using the Espresso and UI Automator testing frameworks. The test runner handles loading your test package and the app under test to a device, running your tests, and reporting test results. This class replaces the InstrumentationTestRunner class, which only supports JUnit 3 tests.

AndroidJUnitRunner是一個可以用來運行JUnit 3JUnit 4樣式的測試類的Test Runner,并且同時支持EspressoUI Automator。這是對于之前的InstrumentationTestRunner的一個升級,如果你去查看Gradle文檔中對于Testing配置的說明,會發現推薦的Test Runner為InstrumentationTestRunnerInstrumentationTestRunner只支持JUnit 3樣式的測試用例,而我們在寫Android測試用例時應該盡可能使用JUnit 4樣式來實現。

相對于Junit 3JUnit 4有如下改進:

測試類不需要再繼承junit.framework.TestCase類;

測試方法名不再需要以test開頭;

可以使用類似@Test, @Before, @After等注解來管理自己的測試方法;

增加了一些Assert方法;

支持對assert方法的static導入。

下面來看一個例子。如下的代碼段采用了JUnit 4風格進行編寫,并且調用了Espresso的API來進行了一些測試:

@RunWith(AndroidJUnit4.class)
@LargeTest
public class MainActivityInstrumentationTest {

    @Rule
    public ActivityTestRule mActivityRule = new ActivityTestRule<>(
            MainActivity.class);

    @Test
    public void sayHello(){
        onView(withText("Say hello!")).perform(click());
        onView(withId(R.id.textView)).check(matches(withText("Hello, World!")));
    }
}

從以上代碼可以看到,JUnit 4支持使用如下注解來管理整個測試用例:

@Before: 標識在運行測試方法之前運行的代碼。可以支持同一個Class中有多個@Before,但是這些方法的執行順序是隨機的。該注解替代了JUnit 3中的setUp()方法。

@After: 標識在運行測試方法結束之后運行的代碼。可以在其中做一些釋放資源的操作。該注解替代了JUnit 3中的tearDown()方法。

@Test: 標識一個測試方法。一個測試類中可以有多個測試方法,每個測試方法需要用一個@Test注解來標識。

@Rule: 簡單來說,是為各個測試方法提供一些支持。具體來說,比如我需要測試一個Activity,那么我可以在@Rule注解下面采用一個ActivityTestRule,該類提供了對相應Activity的功能測試的支持。該類可以在@Before@Test標識的方法執行之前確保將Activity運行起來,并且在所有@Test@After方法執行結束之后將Activity殺死。在整個測試期間,每個測試方法都可以直接對相應Activity進行修改和訪問。

@BeforeClass: 為測試類標識一個static方法,在測試之前只執行一次。

@AfterClass: 為測試類標識一個static方法,在所有測試方法結束之后只執行一次。

@Test(timeout=): 為測試方法設定超時時間。

Instrumentation

根據官方的說法,

Android instrumentation is a set of control methods or hooks in the Android system. These hooks control an Android component independently of its normal lifecycle. They also control how Android loads applications.

Android Instrumentation提供了一些方法,可以用來獨立地控制某個組件的生命周期。

一般來說,Android中組件的生命周期是由系統來控制的。比如,我們啟動了一個Activity,那么Activity的生命周期方法會自動為我們調用,Android APIs并沒有提供入口讓我們直接去調用這些生命周期方法,但是使用Instrumentation就可以做到。

Instrumentation可以將要測試的APP以及其對應的test Package加載到同一個進程中。由于我們所要測試的組件和其測試用例都運行在同一進程,因此我們就可以在我們的測試用例中直接調用組件的方法,對組件做一系列訪問和修改。

Android Testing Support Library APIs

Android為自動化測試提供了如下的API供我們使用:

AndroidJUnitRunner: 以上已經提到;

Espresso: 提供了UI測試的API;

UI Automator: 提供了跨APP UI測試的API。

EspressoUI Automator會在接下來的文章中詳細說明。

Assertion

在做測試的過程中,我們應該如何檢查實際的結果符合我們的預期呢?

這里就要用到了Assertion ClassesAssertion Classes提供了一系列assert方法用來比對我們檢測的數據和期望的數據是否一致,如果檢測失敗,則會拋出一個AssertionException異常。

比方說在上一篇文章中貼出來的AppStartActivityTest代碼中,有這么一行:

assertNotNull("AppStartActivity Content is Null", content);

這一行代碼就是檢查content的內容不為空。其中第一個參數指定了一個提示文案,第二個參數指定了需要測試的字符串。

為了簡化我們的測試代碼,在之后的測試中,我們還會使用到一個叫做Hamcrest的類庫,用來簡化我們的Assertion過程。這些都將會在接下來的文章中一一介紹。

附錄

Android自動化測試-從入門到入門(1) Hello Testing!
Android自動化測試-從入門到入門(2) Testing APIs
Android自動化測試-從入門到入門(3) Espresso入門
Android自動化測試-從入門到入門(4) uiautomatorviewer
Android自動化測試-從入門到入門(5) AdapterView的測試
Android自動化測試-從入門到入門(6) 會玩的Espresso
Android自動化測試-從入門到入門(7) UI Automator

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/65384.html

相關文章

  • Android動化測試-入門入門(3)Espresso入門

    摘要:附錄自動化測試從入門到入門自動化測試從入門到入門自動化測試從入門到入門入門自動化測試從入門到入門自動化測試從入門到入門的測試自動化測試從入門到入門會玩的自動化測試從入門到入門 根據該系列之前的兩篇文章:Hello Testing和Testing APIs,我們已經對Android自動化測試的整體背景有了一些了解。還記得第一篇文章里我提到過的基本思路么? 把自己當成用戶,只關注我能看到的...

    Songlcy 評論0 收藏0
  • Android動化測試-入門入門(1)Hello Testing!

    摘要:開始的開始最近在做上的自動化測試,從最初的第三方自動化測試框架到后來的,再到最終完成答疑君客戶端一些核心流程的自動化測試,期間也是經歷了各種大大小小的坑。 開始的開始 最近在做Android上的自動化測試,從最初的第三方自動化測試框架appium到后來的Android Support Testing Library,再到最終完成答疑君Android客戶端一些核心流程的自動化測試,期間也...

    baiy 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<