Idr*_*ack 2 java junit android kotlin retrofit2
我遇到了一个挑战,当我单独运行它时,我的测试通过了,但当我运行所有测试时失败了,它向我显示了以下错误消息:
java.lang.RuntimeException:android.os.Looper 中的 getMainLooper 方法未被模拟。有关详细信息,请参阅http://g.co/androidstudio/not-mocked。
在 android.os.Looper.getMainLooper(Looper.java) 在retrofit2.Platform$Android$MainThreadExecutor.(Platform.java:172) 在retrofit2.Platform$Android.defaultCallbackExecutor(Platform.java:145) 在retrofit2.Retrofit$Builder .build(Retrofit.java:585) 在 com.andela.mrm.notifications.SlackService.getApi(SlackService.kt:26) 在 com.andela.mrm.notifications.SlackServiceTest.getAPI(SlackServiceTest.kt:12) 在太阳。在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)在sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)在java.lang.reflect.Method.invoke( Method.java:498) 在 org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50) 在 org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) 在 org. junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47) 在 org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17) 在 org.junit.runners.ParentRunner.runLeaf(ParentRunner. java:325) 在 org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78) 在 org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57) 在 org.junit.runners.ParentRunner$3.run( ParentRunner.java:290) 在 org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71) 在 org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288) 在 org.junit.runners.ParentRunner。访问 $000(ParentRunner.java:58) 在 org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268) 在 org.junit.runners.ParentRunner.run(ParentRunner.java:363) 在 org.junit.runners .Suite.runChild(Suite.java:128) 在 org.junit.runners.Suite.runChild(Suite.java:27) 在 org.junit.runners.ParentRunner$3.run(ParentRunner.java:290) 在 org.junit .runners.ParentRunner$1.schedule(ParentRunner.java:71) 在 org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288) 在 org.junit.runners.ParentRunner.access$000(ParentRunner.java:58) 在org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268) 在 org.junit.runners.ParentRunner.run(ParentRunner.java:363) 在 org.junit.runner.JUnitCore.run(JUnitCore.java:137) )在com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:68)在com.intellij.rt.execution.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:47)在com.intellij.rt.execution。 junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:242) 在 com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:70)
以下是我要测试的 Retrofit 实例:
class SlackService {
private var retrofit: Retrofit? = null
/**
* This method creates a new instance of the API interface.
*
* @return The API interface
*/
val api: SlackApi
get() {
val baseURL = "https://hooks.slack.com/"
val client = ApiService.getOkHttpClient()
if (retrofit == null) {
retrofit = Retrofit.Builder()
.baseUrl(baseURL)
.client(client)
.build()
}
return retrofit!!.create(SlackApi::class.java)
}
}
Run Code Online (Sandbox Code Playgroud)
然后,这是对 Retrofit 实例的测试:
class SlackServiceTest {
@Test
fun getAPI() {
val slackService = SlackService()
assertNotNull(slackService.api)
}
}
Run Code Online (Sandbox Code Playgroud)
我设法通过这里看到一些类似的问题,但它们与 RxJava 有关,并且我没有使用它,我该如何获得帮助?
谢谢
小智 6
添加这个解决了我的问题。
android {
// ...
testOptions {
unitTests.returnDefaultValues = true
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7400 次 |
| 最近记录: |