使用 ActivityScenarioRule 开始测试 - Android Studio
Starting a test with ActivityScenarioRule - AndroidStudio
我正在尝试在我的物理设备上设置一些基本的仪器测试,我是 运行 AndroidStudio。
测试相当简单:
@RunWith(AndroidJUnit4.class)
public class MyActivityTest {
private ActivityScenarioRule<MyActivity> scenarioRule = new ActivityScenarioRule<>(MyActivity.class);
@Test
public void onFoo() {
ActivityScenario scenario = scenarioRule.getScenario();
}
}
当它运行时,会发生这种情况:
java.lang.NullPointerException: throw with null exception
at androidx.test.internal.util.Checks.checkNotNull(Checks.java:34)
at androidx.test.ext.junit.rules.ActivityScenarioRule.getScenario(ActivityScenarioRule.java:118)
at com.me.sample.activities.MyActivityTest.onFoo(MyActivityTest.java:...)
根据 the documents,如果在没有测试 运行 时使用 getScenario()
,则会抛出 NullPointerException。我 运行 使用 AndroidStudio UI 进行这些测试,并且这些测试出现在测试 运行 window 中,所以它抛出异常对我来说没有意义.
是否需要添加 before()
方法来设置 scenarioRule?我缺少某些设置吗?或者这可能是由 MyActivity
?
中的依赖项或其他内容引起的
我缺少注释。这是有效的版本:
@RunWith(AndroidJUnit4.class)
@SmallTest
public class MyActivityTest {
@Rule
public ActivityScenarioRule<MyActivity> activityRule = new ActivityScenarioRule<>(MyActivity.class);
@Test
public void foo() {
ActivityScenarioRule<MyActivity> scenario = activityRule.getScenario()
}
}
我正在尝试在我的物理设备上设置一些基本的仪器测试,我是 运行 AndroidStudio。
测试相当简单:
@RunWith(AndroidJUnit4.class)
public class MyActivityTest {
private ActivityScenarioRule<MyActivity> scenarioRule = new ActivityScenarioRule<>(MyActivity.class);
@Test
public void onFoo() {
ActivityScenario scenario = scenarioRule.getScenario();
}
}
当它运行时,会发生这种情况:
java.lang.NullPointerException: throw with null exception
at androidx.test.internal.util.Checks.checkNotNull(Checks.java:34)
at androidx.test.ext.junit.rules.ActivityScenarioRule.getScenario(ActivityScenarioRule.java:118)
at com.me.sample.activities.MyActivityTest.onFoo(MyActivityTest.java:...)
根据 the documents,如果在没有测试 运行 时使用 getScenario()
,则会抛出 NullPointerException。我 运行 使用 AndroidStudio UI 进行这些测试,并且这些测试出现在测试 运行 window 中,所以它抛出异常对我来说没有意义.
是否需要添加 before()
方法来设置 scenarioRule?我缺少某些设置吗?或者这可能是由 MyActivity
?
我缺少注释。这是有效的版本:
@RunWith(AndroidJUnit4.class)
@SmallTest
public class MyActivityTest {
@Rule
public ActivityScenarioRule<MyActivity> activityRule = new ActivityScenarioRule<>(MyActivity.class);
@Test
public void foo() {
ActivityScenarioRule<MyActivity> scenario = activityRule.getScenario()
}
}