我想在创建活动之前获得对它的引用,以便注入一些模拟。
所以我的活动测试规则如下:

   ActivityTestRule mActivityRule = new ActivityTestRule<MainActivity>(MainActivity,class, true, false)

我知道activitytestrule有一个beforeactivitylaunched回调,但在那里我无法获得对我的活动的任何引用(那里是空的)。
如果我这样做:
@Rule
public ActivityTestRule<MainActivity> mActivityTestRule = new ActivityTestRule(
        MainActivity.class) {
    @Override
    protected void beforeActivityLaunched() {
        super.beforeActivityLaunched();
        MainActivity act = (MainActivity)getActivity();
         //Here act is null

我也无法在测试类的setup方法中获取对活动的引用。仅当我执行rule.launchActivity()时,活动引用才准备就绪,但随后将执行活动,并且之前无法传递任何依赖项。我知道我可以用匕首,但我想避免用匕首。在启动活动依赖项之前,是否有任何方法可以在不使用匕首的情况下对其进行准备?

最佳答案

如果activitytestrule中的第二个参数(launchactivity)为false,则意味着您应该自定义每个测试方法的意图

@Test
public void dummyTest() {
  mActivityRule.launchActivity(new Intent());
 // code here
}

10-07 23:12