【发布时间】: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