unit-testing test教學 - Android Eclipse插件:未指定Instrumentation Test Runner




junit example (7)

嘗試使用Android項目從Eclipse運行單元測試時出現此錯誤。 在Android偏好設置中,Instrumentation Test Runners列表為空。

[2009-06-17 23:57:51 - MyApp]錯誤:應用程序未指定android.test.InstrumentationTestRunner檢測或未聲明uses-library android.test.runner

它也惱人地決定,因為我試圖進行一次單元測試,這就是我一直想做的事情。


Answers

您可能缺少AndroidManifest.xmluses-libraryinstrumentation節點:

<manifest ...>
    <application ...>
        <!-- ... -->
        <uses-library android:name="android.test.runner" />
    </application>
    <instrumentation android:name="android.test.InstrumentationTestRunner"
        android:targetPackage="your.package"
        android:label="your tests label" />
</manifest>

問題是當你創建項目時,你會有一個AVD,所以這些配置將會丟失。 我建議的方法是先創建AVD,然後創建android項目:)。

如果您已經創建了項目,並且如果您編寫的代碼不多,我建議刪除它並創建一個新代碼。


Run Configuration您可能有Android JUnit Test ,如果其中有任何新的啟動配置條目,您將其刪除,然後運行它將運行的應用程序。

注意 - 如果您在向Josef添加正確的行之前嘗試運行測試用例,這可能是解決方案,如Josef的答案中所述。 如果您已完成此操作,請刪除配置(將抱怨其標題中未指定任何檢測測試運行器),然後再次將其作為Android Junit測試運行,它將創建一個有效的配置,以獲取您正確的內容已添加到清單中(請參閱Josef的答案)。


我在本次討論中註意到的一件事可能是讓一些人感到沮喪,你需要確保清單中的“instrumentation”元素是“manifest”的子元素,而不是“application”的子元素。 (這裡的例子是正確的,但這很容易混淆。)

http://developer.android.com/guide/topics/manifest/instrumentation-element.html

如果你將你的儀器內容放在應用程序中,它就不會被選中,你在Eclipse ADT插件中選擇的儀器運行器可能是空白的。 (但不會拋出或顯示錯誤等)


除了確保在測試應用程序的清單中聲明以下項目之外,請在“運行配置”中檢查“Instrumentation runner”字段設置為

"com.google.android.apps.common.testing.testrunner.GoogleInstrumentationTestRunner". 

這是我在弄清楚我測試的原因時遇到的問題。

表現:

<instrumentation android:name="android.test.InstrumentationTestRunner"
 android:targetPackage="your.package"
 android:label="your tests label" />

 and...

<uses-library android:name="android.test.runner" />

它不在您的代碼中,只是日食是一個小小的車。 在您的運行配置中,它可能嘗試運行jUnit測試,但選擇Run Application並且該錯誤將消失。


holder.cBox.setOnCheckedChangeListener(null);
holder.cBox.setChecked(list.get(position).isChecked());
holder.tvName.setText(item.getName());

holder.cBox.setOnCheckedChangeListener(new OnCheckedChangeListener()
{
    @Override
    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked)
    {
        if (isChecked)
        {
            list.get(position).setChecked(true);
        }
        else
        {
            list.get(position).setChecked(false);
        }
    }
});

在列表中,該項目具有一個屬性,用於設置是否選中該項目。 您可以使用它來設置是否選中項目,首先應設置

cBox.setOnCheckedChangeListener(null);
cBox.setChecked(list.get(position).isChecked());

然後設置真正的new OnCheckedChangeListener()

我希望我的回答對您和那些查看此頁面的人有用,或者在處理具有項目複選框的列表視圖時遇到問題。





android eclipse unit-testing junit