使用Junit进行回调的单元测试用例

时间:2019-02-27 16:21:54

标签: java android kotlin junit4

我正在尝试为具有回调函数作为参数的类编写一些单元测试用例(请参见下面的代码)

class NetworkApi(private val url: String) {

    fun getToken(listener: (String) -> Unit) {
        Thread(Runnable {
            Thread.sleep(2000)
            if (TextUtils.isEmpty(url)) listener("")
            else listener("Dummy token")
        }).start()
    }
}

,单元测试用例是

@RunWith(AndroidJUnit4::class)
class NetworkApiTest {

    var networkApi: NetworkApi? = null

    @Test
    fun testEmptyToken() {
        networkApi = NetworkApi("")
        networkApi?.getToken {
            Assert.assertThat(it, isEmptyOrNullString())
        }
    }

}

每当我运行此测试用例时,无论我发送什么值,我都会一直获得成功。我知道我没有采取确切的方法。 有人可以帮我为JUnit中的类编写单元测试用例。

1 个答案:

答案 0 :(得分:2)

问题是测试在调用回调之前完成,并且add_filter('manage_edit-comments_columns', 'my_add_comments_columns'); function my_add_comments_columns($my_cols) { $temp_columns = array( 'phone' => 'Phone' ); $my_cols = array_slice($my_cols, 0, 3, true) + $temp_columns + array_slice($my_cols, 3, NULL, true); return $my_cols; } add_action('manage_comments_custom_column', 'my_add_comment_columns_content', 10, 2); function my_add_comment_columns_content($column, $comment_ID) { global $comment; switch ($column) : case 'phone' : { echo get_comment_meta($comment_ID, 'phone', true); break; } endswitch; } 在错误的线程中。 您必须将结果从回调复制回主线程。使用CompletableFuture。 如果您希望在一段时间后无法通过测试,可以使用带有超时值的assert方法:

get