Java泛型:如何包装/扩展Android活动测试用例?

Java泛型:如何包装/扩展Android活动测试用例?,java,android,generics,Java,Android,Generics,我正在尝试扩展ActivityInstrumentationTestCase2,如下所示: public abstract class FooActivityTestCase<T extends Activity> extends ActivityInstrumentationTestCase2<Activity> { public FooActivityTestCase(String pckg, Class<Activity> activityCl

我正在尝试扩展ActivityInstrumentationTestCase2,如下所示:

public abstract class FooActivityTestCase<T extends Activity>
  extends ActivityInstrumentationTestCase2<Activity> {

  public FooActivityTestCase(String pckg, Class<Activity> activityClass)
  {
    super(pckg, activityClass);
  }

  public void foo(){ ... }
}
Eclipse在构造函数中给了我以下错误:

The constructor FooActivityTestCase<MyActivity>(String, Class<MyActivity>) is undefined

您需要像这样定义超级构造函数:

public class SpecificFooTestCase
  extends FooActivityTestCase<MyActivity> {
  public SpecificFooTestCase() {
    super("foo.bar", MyActivity.class);  // error on this line
  }
}
//Only accepts classes that are Activity or extend Activity
 public FooActivityTestCase(String pckg, Class<? extends Activity> activityClass)
      {
        super(pckg, activityClass);
      }
//只接受属于活动或扩展活动的类

public FooActivityTestCase(字符串pckg,类这是我如何进行Android单元测试的:

public class MyInstrumentationTestRunner extends InstrumentationTestRunner 
{
    @Override
    public TestSuite getAllTests() 
    {
        InstrumentationTestSuite suite = new InstrumentationTestSuite(this);
        suite.addTestSuite(MyTestClass.class);
        return suite;
    }

    @Override
    public ClassLoader getLoader() 
    {
        return MyInstrumentationTestRunner.class.getClassLoader();
    }
}
并将您的测试类定义为:

public class myTestClass extends
    ActivityInstrumentationTestCase2<Home> 
{
    Context _context;

    public MyTestClass() 
    {
        super("com.MyClassToTest", Home.class);
    }

    public void testfunction() 
    {
        myFunction(_context);
    }

    @Override
    protected void setUp() throws Exception 
    {
        super.setUp();
        setActivityInitialTouchMode(false);
        Activity activity = getActivity();
        _context = activity.getApplicationContext();
    }
}
公共类myTestClass扩展
ActivityInstrumentationTestCase2
{
语境(Context)语境;;
公共MyTestClass()
{
超级(“com.MyClassToTest”,Home.class);
}
公共void testfunction()
{
myFunction(_context);
}
@凌驾
受保护的void setUp()引发异常
{
super.setUp();
setActivityInitialTouchMode(假);
Activity=getActivity();
_context=activity.getApplicationContext();
}
}

你能用Class替换Class参数吗?(没有Android,我只是猜测。)看起来
FooActivityTestCase
应该扩展
ActivityInstrumentationTestCase2
而不是
ActivityInstrumentationTestCase2
。这非常接近。但是,看起来我必须在编译之前将activityClass强制转换为类。拥有类
public class myTestClass extends
    ActivityInstrumentationTestCase2<Home> 
{
    Context _context;

    public MyTestClass() 
    {
        super("com.MyClassToTest", Home.class);
    }

    public void testfunction() 
    {
        myFunction(_context);
    }

    @Override
    protected void setUp() throws Exception 
    {
        super.setUp();
        setActivityInitialTouchMode(false);
        Activity activity = getActivity();
        _context = activity.getApplicationContext();
    }
}