簡體   English   中英

android單元測試spannablestringbuilder

[英]android unit test spannablestringbuilder

我的一個類使用SpannableStringBuilder ,我需要為它編寫單元測試代碼。 此類用於一般用途,不與任何 UI 組件交互。 我將其視為本地單元測試,但 Android Studio 抱怨“未模擬單元測試”。 我已經檢查了 Android Mock 和 robolectric,但我不知道我必須模擬哪種儀器。 我還嘗試將測試放在AndroidTest目錄下並將其作為儀器測試運行,但仍然出現錯誤“找不到類:“.....”空測試服”。

單元測試代碼:

package xxxxxxx;  // Sorry but I should keep it secret now.

import android.support.test.filters.SdkSuppress;
import android.test.suitebuilder.annotation.SmallTest;
import android.text.SpannableString;
import android.support.test.runner.AndroidJUnit4;

import org.junit.Test;
import org.junit.runner.RunWith;

import xxxxxxx.HtmlParser;

import static org.junit.Assert.*;

@RunWith(AndroidJUnit4.class)
@SdkSuppress(minSdkVersion=16)
@SmallTest
public class HtmlParserTest {
    @Test
    public void TestGetHtml() {
        // assertion goes here
    }

    @Test
    public void TestGetPlainText() {
        // assertion goes here
    }
}

不知道是不是因為我做錯了什么。 最終我得到了它的工作,我會在這里發布解決方案供您參考。

正如我在問題中提到的,這個單元測試應該在 Android 設備或模擬器上運行。 所以首先要做的是將它移動到androidTest目錄中。 只有這樣,Android Studio 才會將其識別為儀器測試。 還請記住按照此處所述更新您的應用程序的gradle.build 但是 Android Studio(我的是 v2.1)不允許你直接運行這個測試(至少我不能)。 您必須創建一個如下所示的測試套件:

package xxxxxxx.htmltestsuite;

import org.junit.runner.RunWith;
import org.junit.runners.Suite;


@RunWith(Suite.class)
@Suite.SuiteClasses({
    HtmlParserTest.class
})

// place holder class
public class HtmlTestSuite {}

今天遇到一個問題,我在test目錄下做junit test的時候,創建一個SpannableStringBuilder,比如SpannableStringBuilder ssb = new SpannableStringBuilder(str),那么ssb的值總是“null”。 但是我在androidTest目錄下刪除了它,並擴展了AndroidTestCase,它的效果。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM