Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android MockWebServer-值计数不同;预期值:1,实际值:0_Android_Unit Testing_Kotlin_Mocking_Mockwebserver - Fatal编程技术网

Android MockWebServer-值计数不同;预期值:1,实际值:0

Android MockWebServer-值计数不同;预期值:1,实际值:0,android,unit-testing,kotlin,mocking,mockwebserver,Android,Unit Testing,Kotlin,Mocking,Mockwebserver,Logcat错误: 2019年2月7日上午10:52:49 okhttp3.mockwebserver.mockwebserver$2执行 信息:MockWebServer[54845]开始接受连接 [size=9333 text=[\n{\n用户id:1\n id:1\n标题:quidem molesti…] 2019年2月7日上午10:52:49 okhttp3.mockwebserver.mockwebserver$3 processOneRequest 信息:MockWebServer[

Logcat错误:

2019年2月7日上午10:52:49 okhttp3.mockwebserver.mockwebserver$2执行

信息:MockWebServer[54845]开始接受连接

[size=9333 text=[\n{\n用户id:1\n id:1\n标题:quidem molesti…] 2019年2月7日上午10:52:49 okhttp3.mockwebserver.mockwebserver$3 processOneRequest

信息:MockWebServer[54845]收到请求:GET/albums?userId=HTTP/1.1,并响应:HTTP/1.1 200 OK

2019年2月7日上午10:52:51 okhttp3.mockwebserver.mockwebserver$2接受连接 信息:MockWebServer[54845]已完成接受连接:套接字已关闭

java.lang.AssertionError:值计数不同;应为:1,实际为:0闩锁=1,值=0,错误=0,完成=0,超时

在io.reactivex.observer.BaseTestConsumer.failBaseTestConsumer.java:189 在io.reactivex.observer.BaseTestConsumer.assertValueCountBaseTestConsumer.java:515 在ir.hosseinabbasi.tdd.dao.TestAlbumDaoViaMockWebService.get从模拟服务器TestAlbumDaoViaMockWebService.kt获取相册列表:58

系统打印输出:

测试等级:

getJson方法:

“我的应用程序”模块中的BuildConfig:

“我的应用程序”模块中的构建改装:

MockWebServer版本:3.12.1

如果我对此行进行注释,则测试通过:
testObserver.assertValueCount1

我想您忘了设置

albumDao.getAlbums("").subscribe(TEST_OBSERVER_HERE)
我创建并测试了它。它与giveobserver-to-subscribe方法一起工作。但如果您不使用它,它将给出与您相同的错误

@RunWith(AndroidJUnit4::class)
class ApiTest {

@Test
fun jsonPlaceholderTest() {

    val mockWebServer = MockWebServer()
    mockWebServer.start()

    val okHttpClient = OkHttpClient.Builder().build()
    val retrofit = Retrofit.Builder()
            .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
            .baseUrl(mockWebServer.url("/").toString())
            .addConverterFactory(GsonConverterFactory.create())
            .client(okHttpClient)
            .build()

    val service = retrofit.create(ServiceInterface::class.java)

    mockWebServer.enqueue(
            MockResponse()
                    .setResponseCode(200)
                    .setBody("[\n" +
                            "  {\n" +
                            "    \"userId\": 1,\n" +
                            "    \"id\": 1,\n" +
                            "    \"title\": \"sunt aut facere repellat  provident occaecati excepturi optio reprehenderit\",\n" +
                            "    \"body\": \"quia et suscipit\\nsuscipit recusandae consequuntur expedita et cum\\nreprehenderit molestiae ut ut quas totam\\nnostrum rerum est autem sunt rem eveniet architecto\"\n" +
                            "  },\n" +
                            "  {\n" +
                            "    \"userId\": 1,\n" +
                            "    \"id\": 2,\n" +
                            "    \"title\": \"qui est esse\",\n" +
                            "    \"body\": \"est rerum tempore vitae\\nsequi sint nihil reprehenderit dolor beatae ea dolores neque\\nfugiat blanditiis voluptate porro vel nihil molestiae ut reiciendis\\nqui aperiam non debitis possimus qui neque nisi nulla\"\n" +
                            "  }\n" +
                            "]")
    )

    val testObserver = TestObserver<List<JsonPlaceHolderResponse>>()

    service.test("https://jsonplaceholder.typicode.com/posts").subscribe(testObserver)

    testObserver.awaitTerminalEvent(2, TimeUnit.SECONDS)

    testObserver.assertValueCount(1)

}
}

interface ServiceInterface {
    @GET
    fun test(@Url url : String): io.reactivex.Observable<List<JsonPlaceHolderResponse>>
}

data class JsonPlaceHolderResponse(
    var userId: Int = 0,
    var id: Int = 0,
    var title: String = "",
    var body: String = ""
)
[
  {
    "userId": 1,
    "id": 1,
    "title": "quidem molestiae enim"
  },
  ...and etc...
  ,{
    "userId": 10,
    "id": 100,
    "title": "enim repellat iste"
  }
]
class Utils {
    companion object {
        fun getJson(path: String): String {
            val uri = this.javaClass.classLoader.getResource(path)
            val file = File(uri.path)
            return String(file.readBytes())
        }
    }
}
buildConfigField("String", "BASE_URL", "\"https://jsonplaceholder.typicode.com\"")
class NetDao {

    fun provideRetrofit(): Retrofit =
        Retrofit.Builder()
            .baseUrl(BuildConfig.BASE_URL)
            .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
            .addConverterFactory(GsonConverterFactory.create())
            .build()
}
albumDao.getAlbums("").subscribe(TEST_OBSERVER_HERE)
@RunWith(AndroidJUnit4::class)
class ApiTest {

@Test
fun jsonPlaceholderTest() {

    val mockWebServer = MockWebServer()
    mockWebServer.start()

    val okHttpClient = OkHttpClient.Builder().build()
    val retrofit = Retrofit.Builder()
            .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
            .baseUrl(mockWebServer.url("/").toString())
            .addConverterFactory(GsonConverterFactory.create())
            .client(okHttpClient)
            .build()

    val service = retrofit.create(ServiceInterface::class.java)

    mockWebServer.enqueue(
            MockResponse()
                    .setResponseCode(200)
                    .setBody("[\n" +
                            "  {\n" +
                            "    \"userId\": 1,\n" +
                            "    \"id\": 1,\n" +
                            "    \"title\": \"sunt aut facere repellat  provident occaecati excepturi optio reprehenderit\",\n" +
                            "    \"body\": \"quia et suscipit\\nsuscipit recusandae consequuntur expedita et cum\\nreprehenderit molestiae ut ut quas totam\\nnostrum rerum est autem sunt rem eveniet architecto\"\n" +
                            "  },\n" +
                            "  {\n" +
                            "    \"userId\": 1,\n" +
                            "    \"id\": 2,\n" +
                            "    \"title\": \"qui est esse\",\n" +
                            "    \"body\": \"est rerum tempore vitae\\nsequi sint nihil reprehenderit dolor beatae ea dolores neque\\nfugiat blanditiis voluptate porro vel nihil molestiae ut reiciendis\\nqui aperiam non debitis possimus qui neque nisi nulla\"\n" +
                            "  }\n" +
                            "]")
    )

    val testObserver = TestObserver<List<JsonPlaceHolderResponse>>()

    service.test("https://jsonplaceholder.typicode.com/posts").subscribe(testObserver)

    testObserver.awaitTerminalEvent(2, TimeUnit.SECONDS)

    testObserver.assertValueCount(1)

}
}

interface ServiceInterface {
    @GET
    fun test(@Url url : String): io.reactivex.Observable<List<JsonPlaceHolderResponse>>
}

data class JsonPlaceHolderResponse(
    var userId: Int = 0,
    var id: Int = 0,
    var title: String = "",
    var body: String = ""
)