Java泛型:如何包装/扩展Android活动测试用例?
我正在尝试扩展ActivityInstrumentationTestCase2,如下所示: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
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();
}
}