【问题标题】:unit testing with the input and output validation带有输入和输出验证的单元测试
【发布时间】:2018-12-19 12:38:09
【问题描述】:

我对 Android 中的单元测试完全陌生。我想为我的演示者类中的一个方法编写单元测试。

分享方法需要覆盖单元测试

 override fun getRequiredUri(uri: Uri): Uri {
    val moduleName = uri.moduleName
    return when (moduleName) {
        "sample" -> getStandardUriFromSampleUri(uri)
        "application" -> getStandardAppLaunchUri(uri)
        else -> {
            return uri
        }
    }
}

private fun getStandardUriFromSampleUri(uri: Uri): Uri {
    var stringUrl = uri.toString()
    stringUrl = stringUrl.replaceFirst("/sample", "")
    var standardUri = Uri.parse(stringUrl)
    val moduleName = uri.moduleName
    if(moduleName == "application"){
        standardUri = getStandardAppLaunchUri(uri)
    }
    return standardUri
}

private fun getStandardAppLaunchUri(uri: Uri): Uri {
    var stringUrl = uri.toString()
    stringUrl = stringUrl.replaceFirst("application", "link/application")
    return  Uri.parse(stringUrl)
}

我正在分享我尝试实现的测试类:

class PresenterTest {

   lateinit var presenter: Presenter
   @Mock
   lateinit var mockActivity: Activity
   @Mock
   lateinit var mockUri: Uri

   @Before
   fun setUp() {
       MockitoAnnotations.initMocks(this)
       presenter = Presenter()
       presenter.view = mockActivity
   }

   @Test
   fun shouldGenerateStandardUriFromNewUri() {
       val input = Uri.parse("https://example.org/sample/account/edit")
       val expectedOutput = Uri.parse("https://example.org/account/edit")
       val output = presenter. getRequiredUri(input)
       assertTrue(output == expectedOutput)
   }

}

这条线总是因为类未找到异常而失败。

val output = presenter.getRequiredUri(input)

这是对方法进行单元测试的正确方法吗?如果是,请建议我需要进行的更改。如果不是,请提出替代方法。

【问题讨论】:

    标签: android unit-testing junit kotlin


    【解决方案1】:

    崩溃发生在线路

    uri.moduleName
    

    ie:从测试类创建 Uri 对象时,路径段 (uri.patheSegments) 为空。

    解决方案是使用 RoboElectricTestRunner 运行测试类。

    也就是测试类应该是这样的:

    @Config(constants = BuildConfig::class)
    @RunWith(RobolectricTestRunner::class)
    class UriInterceptPresenterTest {
    
     //-----Test cases-----
    
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-12-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-07
      • 1970-01-01
      相关资源
      最近更新 更多