2015-11-16 26 views
4

我正在使用espresso將測試添加到我的Android應用程序中。我如何獲得應用程序咖啡?

在我的TestActivity中,我有一些只在用戶簽名時纔可見的視圖。 userIsSignedIn標誌存儲在MyApp中,這是android.app.Application的子類。有沒有辦法在測試用例中訪問MyApp的實例?

如果不是,那麼做什麼替代方法?

感謝

回答

11

在您的測試類,你可以使用這樣的事情:

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

然後在您的測試方法:

@Test 
public void doSomething() { 

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

} 
+0

這就是我最終做的,它工作得很好;謝謝 :) – menawi

0

可以使用@rule此 -

@Rule 
public ActivityTestRule<MainActivity> mActivityRule = new ActivityTestRule<> MainActivity.class); 
-1
@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); 

     } 
    } 
}