【发布时间】:2015-08-07 00:49:38
【问题描述】:
我在我的 android 项目中添加了以下依赖项:
// Unit testing dependencies
androidTestCompile 'junit:junit:4.12'
// Set this dependency if you want to use Mockito
androidTestCompile 'org.mockito:mockito-core:1.10.19'
并使用 junit4 api 创建一个测试(例如,Adder 是一个简单的对整数求和的类):
@RunWith(MockitoJUnitRunner.class)
public class AdderTest {
@Test
public void testValidAdd() {
Adder adder = new Adder();
assertEquals(adder.add(1,1), 2);
}
}
当我尝试运行测试时,我得到:
运行测试 试运行开始 junit.framework.AssertionFailedError:在 com.test.myapp.AdderTest 中找不到测试 在 android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:191) 在 android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:176) 在 android.test.InstrumentationTestRunner.onStart(InstrumentationTestRunner.java:554) 在 android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1701) 完成
有人看到我做错了什么/有什么意见吗?
【问题讨论】:
-
单元测试属于
test文件夹,所以使用testCompile。此外,您不需要@RunWith(MockitoJUnitRunner.class)。 -
这只是一个例子。我确实需要在我的原始项目中使用模拟。此外,我正在测试的代码使用 android.util.Patterns.EMAIL_ADDRESS,当我将它作为单元测试运行时它返回 null。如果我将它作为 Android 仪器测试运行,它不会返回实际的匹配器吗?
-
为了清楚起见,发布您的代码。您应该使用 Robolectric 进行单元测试。它将检测您需要的类,因此您不需要模拟所有内容。
-
我确实需要使用 Mockito 来模拟一些类依赖的响应。在测试类中使用 @RunWith(RobolectricTestRunner.class) + 添加 MockitoAnnotations.initMocks(this);我的 setup() 方法确实使我的测试作为单元测试工作(android.util.Patterns.EMAIL_ADDRESS 不返回 null)。这是要走的路吗?看起来很复杂:/
-
一点也不复杂。请在此处查看我的 Android Gradle 模板:github.com/jaredsburrows/AndroidGradleTemplate/blob/master/…
标签: java android unit-testing junit mockito