如何在Espresso中获取应用程序?

13

我正在使用Espresso为我的Android应用添加测试。

在我的TestActivity中,有些视图仅在用户登录时可见。 userIsSignedIn标记存储在MyApp中,它是android.app.Application的子类。 我能否在测试用例中访问MyApp的实例?

如果不行,有什么替代方法吗?

谢谢

3个回答

27

在您的测试类中,您可以使用类似以下的内容:

@Rule
public ActivityTestRule<MainActivity> mActivityRule =
        new ActivityTestRule<>(MainActivity.class);

那么在你的测试方法中:

@Test
public void doSomething() {

   //....
   mActivityRule.getActivity().getApplication();

}

这就是我最终做的,它很好地工作了;谢谢 :) - menawi

-3

你可以使用@Rule来实现这个功能 -

@Rule
public ActivityTestRule<MainActivity> mActivityRule = new ActivityTestRule<> MainActivity.class);

-3
@RunWith(AndroidJUnit4.class)
public class Regression extends BaseTest {
    private static final String TAG = TestConstants.TAGPRETEXT + Regression.class.getSimpleName() + " ";

    private ActivityTestRule<MainActivity> activityTestRule;
    private TestName testName;

    @Rule
    public RuleChain chain = RuleChain
            .outerRule(activityTestRule = new ActivityTestRule<>(MainActivity.class))
            .around(testName = new TestName());

    @Override
    public <MainActivity extends AppCompatActivity> MainActivity getActivity() {
        return (MainActivity) activityTestRule.getActivity();
    }

    @Override
    public TestName getTestName() {
        return testName;
    }

    @Test
    public void addBasalProgram24Segments() {
        String programName = "testing" + System.currentTimeMillis() / 1000;

        try {
            new Main()
                    .doBasal()
                    .createBasalSegment(new float[]{1.15f, 14.55f, 0.05f, 12.05f, 19.05f, 21.5f, 20, 1.85f, 10.0f, 1, 2, 4, 15, 26.05f, 10, 30, 15, 4, 25, 15, 5, 12, 10, 20}, programName, new Random().nextInt(5), activityTestRule)
                    .verifyBasalProgramExist(programName);
        } catch (MyEspressoException e) {
            testFailRoutine(e);

        }
    }
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接