android 如何避免与JUnit4测试非常相似的代码重复

rsaldnfx  于 2022-12-02  发布在  Android
关注(0)|答案(1)|浏览(115)

我在不同的模块中有几个JUnit4测试,它们看起来几乎相同(下面是几十个中的3个示例):
第一个
唯一变化的部分是response,它总是展开为相同的GraphQlCallError.UnrecoverableError(“Given”和“Then”部分是相同的)。
避免所有这些代码重复的最佳方法是什么?

5anewei6

5anewei61#

您可以编写一个函数来接受生成响应的lambda:

fun testResponseIsUnrecoverable(
    responseLambda: () -> Result<Any, GraphQlCallError>
): TestResult = runTest {
    // Given
    coEvery { getAccessTokenInteractor() } returns Err(GetAccessTokenInteractor.ErrResult.AccountNotFound)

    // When
    val response: Result<Any, GraphQlCallError> = responseLambda()

    // Then
    response.unwrapError() is GraphQlCallError.UnrecoverableError
}

那么你的三个测试可以简化为:
第一个

相关问题