2016-05-16 63 views
0

如何测试访问应用程序context的方法,例如为了从资源中获取字符串。测试方法包括上下文等

代码:

public String getString(Context context) { 
    String string = context.getResources().getString(R.id.string); 
    return string; 
} 

测试代码:

MyClass myClass; 

Context context; // ??? 

@Before 
public void setUp(){ 
    myClass = new MyClass(); 
} 

@Test 
public void convertToMessage() throws Exception { 
    String myString = "My string"; 
    String gettedString = myClass.getString(context); 
    assertEquals(myString, gettedString); 
} 

做什么用的背景?

回答

2
@Before 
public void setUp(){ 
    myClass = new MyClass(); 
    context = InstrumentationRegistry.getTargetContext(); 
} 

另请参阅the Android testing documentationthe InstrumentationRegistry JavaDocs

+0

事实证明,我应该在设备上运行测试以进行测试? – whalemare

+1

@whalemare:是的,我认为你正在执行仪器测试。虽然Robolectric或类似的嘲笑框架可能会满足您的需求,但您没有可直接用于单元测试的“Context”(即在Android之外进行测试)。 – CommonsWare

+0

好的。感谢您的帮助!) – whalemare