我看了很多关于android工具测试的文章和文档,但是我的代码无法正常工作。
我的情况是,我不能使用模拟上下文对象,我需要一个有效的对象。
我试过使用:
@Before
public void setUp() throws Exception
{
super.setUp();
setActivityInitialTouchMode(true);
// Injecting the Instrumentation instance is required
// for your test to run with AndroidJUnitRunner.
injectInstrumentation(InstrumentationRegistry.getInstrumentation());
_context = getActivity();
assertThat(_context, isA(Context.class));
}
但我明白了
java.lang.runtimeexception:无法启动活动
我尝试让测试扩展instrumentationtest并使用getinstrumentation().getcontext()
但这也是空的。
据我所知,插装测试正是为了:当您需要利用应用程序(即上下文)时。
那么,您知道如何使用junit4在androidstudio的2.0环境中访问有效的、非空的上下文对象吗?
以下是我目前最好的尝试:
@RunWith(AndroidJUnit4.class)
@SmallTest
public class StartWorkoutRadialProgressBarTest extends ActivityInstrumentationTestCase2
{
Context _context;
public StartWorkoutRadialProgressBarTest()
{
super(StartWorkoutRadialProgressBar.class);
}
@Before
public void setUp() throws Exception
{
super.setUp();
setActivityInitialTouchMode(true);
// Injecting the Instrumentation instance is required
// for your test to run with AndroidJUnitRunner.
injectInstrumentation(InstrumentationRegistry.getInstrumentation());
_context = getActivity();
assertThat(_context, isA(Context.class));
}
@Test
public void initialization()
{
StartWorkoutRadialProgressBar bar = new StartWorkoutRadialProgressBar(100,100, _context);
Assert.assertThat(4, is(4));
}
}
注:使用 context = new MockContext()
不起作用,因为我得到一个错误库试图调用一个资源。
1条答案
按热度按时间vd8tlhqk1#
我的构造函数用于一个不是活动的类:
当我把它改成一个我创建并调用的泛型活动类时
A_Testing
成功了:因此,您必须使用activity类初始化,因为activityinstrumentationtestcase2没有为getactivity()调用提供有效的上下文对象。