Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/227.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android JUnit测试服务时出错_Android_Junit - Fatal编程技术网

Android JUnit测试服务时出错

Android JUnit测试服务时出错,android,junit,Android,Junit,代码: 例外情况: public class Testprogdi extends ActivityInstrumentationTestCase2 { public Testprogdi(String pkg, Class activityClass) { super(pkg, activityClass); // TODO Auto-generated constructor stub } Context mContext;

代码:

例外情况:

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"));
    }
}

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

测试用例应该有一个无参数的公共构造函数或一个带有单个字符串参数的构造函数

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

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)`

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

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

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


我不知道test1()和test2()如何都能通过。

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

public Testprogdi(String name) {
    // initialization 
}
您忘记了这里的参数:

public Testprogdi() {
    super("com.progdi", progdi.class);
    // TODO Auto-generated constructor stub
    }
公共类Testprogdi扩展了ActivityInstrumentationTestCase2{}

老实说,我对junit测试用例一无所知,但我认为,正如您的例外情况所表明的,您可能应该通过名称
TestCase(字符串名称)
TestCase()声明
public构造函数
如果这是正确的解决方案,您应该点击他答案左上角的复选标记来接受它。这样,社区就知道在您的特定情况下什么是正确的解决方案
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
}
public Testprogdi() {
    super("com.progdi", progdi.class);
    // TODO Auto-generated constructor stub
    }
public class Testprogdi extends ActivityInstrumentationTestCase2<progdi> {}