我正在使用espresso將測試添加到我的Android應用程序中。我如何獲得應用程序咖啡?
在我的TestActivity
中,我有一些只在用戶簽名時纔可見的視圖。 userIsSignedIn
標誌存儲在MyApp
中,這是android.app.Application
的子類。有沒有辦法在測試用例中訪問MyApp
的實例?
如果不是,那麼做什麼替代方法?
感謝
我正在使用espresso將測試添加到我的Android應用程序中。我如何獲得應用程序咖啡?
在我的TestActivity
中,我有一些只在用戶簽名時纔可見的視圖。 userIsSignedIn
標誌存儲在MyApp
中,這是android.app.Application
的子類。有沒有辦法在測試用例中訪問MyApp
的實例?
如果不是,那麼做什麼替代方法?
感謝
在您的測試類,你可以使用這樣的事情:
@Rule
public ActivityTestRule<MainActivity> mActivityRule =
new ActivityTestRule<>(MainActivity.class);
然後在您的測試方法:
@Test
public void doSomething() {
//....
mActivityRule.getActivity().getApplication();
}
可以使用@rule此 -
@Rule
public ActivityTestRule<MainActivity> mActivityRule = new ActivityTestRule<> MainActivity.class);
@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);
}
}
}
這就是我最終做的,它工作得很好;謝謝 :) – menawi