服务的JUnit测试出错



代码:

public class Testprogdi extends ActivityInstrumentationTestCase2 {
    public Testprogdi(String pkg, Class activityClass) {
        super(pkg, activityClass);
        // TODO Auto-generated constructor stub
    }
    Context mContext;
    Registration reg = new Registration();
    public void setUp(){
        try {
            super.setUp();
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        mContext = this.getInstrumentation().getContext();
    }   
    public void test(){
        Assert.assertNotNull(reg.pass_url());}
    public void test1(){
        Assert.assertTrue(reg.pass_url().startsWith("www"));}
    public void test2(){
        Assert.assertTrue(reg.pass_url().startsWith("http"));
    }
}

例外:

junit.framework.AssertionFailedError: Class com.android.deviceintelligence.test.Testprogdi has no public constructor TestCase(String name) or TestCase()
at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:169)
at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:154)
at android.test.InstrumentationTestRunner.onStart(InstrumentationTestRunner.java:529)
at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1448)`

我的所有测试类都出现了相同的错误。

TestCase应该有一个无arg的公共构造函数或一个带有单个String参数的构造函数。

您应该删除您的公共Testprogdi(String-pkg,Class-activityClass)构造函数,并在setUp()方法中进行任何类型的初始化或添加

public Testprogdi() {}

public Testprogdi(String name) {
    // initialization 
}

顺便说一句,如果你做一些其他的改变(与第一个问题无关),你的测试会更容易维护:

为测试方法提供更有意义的名称。

不需要在setUp()中捕获(异常e)。

我不知道test1()和test2()是如何通过的。

Eclipse为您提供了构造函数模板,如:

public Testprogdi(String pkg, Class<progdi> activityClass) {
    super(pkg, activityClass);
    // TODO Auto-generated constructor stub
}

或:

public Testprogdi(Class<progdi> activityClass) {
    super(activityClass);
    // TODO Auto-generated constructor stub
}

progdi是活动类的名称。但正如教程中所说,contsructor应该是这样的:

public Testprogdi() {
    super("com.progdi", progdi.class);
    // TODO Auto-generated constructor stub
    }

你忘了这里的参数:

public class Testprogdi extends ActivityInstrumentationTestCase2<progdi> {}

最新更新