簡體   English   中英

錯誤“在 Junit 測試中沒有公共 TestCase(String name) 或 TestCase()

[英]Error "has no public TestCase(String name) or TestCase() in Junit test

我是junit測試android的初學者。 我正在關注本教程,但收到此錯誤

junit.framework.AssertionFailedError: Class com.example.projectfortest.test.MainActivityTest has no public constructor TestCase(String name) or TestCase()
at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:191)
at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:176)
at android.test.InstrumentationTestRunner.onStart(InstrumentationTestRunner.java:554)
at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1701)

這是我的代碼:

public class MainActivityTest extends
        ActivityInstrumentationTestCase2<MainActivity> {

    private MainActivity mMainActivity;
    private TextView mFirstTestText;
    private String expected, actual;

    public MainActivityTest(Class<MainActivity> activityClass) {
        super(activityClass);
    }

    @Override
    protected void setUp() throws Exception {
        super.setUp();

        mMainActivity = getActivity();
        mFirstTestText = (TextView) mMainActivity.findViewById(R.id.txt1);

        expected = mMainActivity.getString(R.string.txt1_test);
        actual = mFirstTestText.getText().toString();
    }

    public void testPreconditions() {
        assertNotNull("mMainActivity is null", mMainActivity);
        assertNotNull("mFirstTestText is null", mFirstTestText);
    }

    public void testMyFirstTestTextView_labelText() {
        assertEquals(expected, actual);
    }
}

我的代碼中沒有發現任何錯誤。 請幫忙

正如異常所說,將默認構造函數添加到您的類。 這是測試框架初始化所必需的。 替換您的構造函數:

public MainActivityTest(Class<MainActivity> activityClass) {
    super(activityClass);
}

通過以下方式:

public MainActivityTest() {
    super(MainActivity.class);
}

此構造函數沒有框架所需的參數,並顯示在教程的代碼列表中:

如果您的問題仍未解決:您可以通過添加來嘗試此注釋

 @RunWith (JUnit4.class)

對我來說,它是 build.gradle 中的錯誤結構。

這是一個很好的實現(build.gradle.kts):

defaultConfig {
    testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
}

dependencies {
   androidTestImplementation("junit:junit:4.13.1")
   androidTestImplementation("androidx.test:runner:1.2.0")
   androidTestImplementation("androidx.test:rules:1.2.0")
}

暫無
暫無

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

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