簡體   English   中英

具有輸入和輸出驗證的單元測試

[英]unit testing with the input and output validation

我是Android單元測試的新手。 我想在presenter類中為方法編寫單元測試。

共享方法需要進行單元測試

 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)

這是對方法進行單元測試的正確方法嗎? 如果是,請提出我需要進行的更改。 如果否,請提出替代方法。

崩潰發生在生產線上

uri.moduleName

即:從測試類創建Uri對象時,路徑段(uri.patheSegments)為空。

解決方案是使用RoboElectricTestRunner運行測試類。

那就是測試類應該看起來像這樣:

@Config(constants = BuildConfig::class)
@RunWith(RobolectricTestRunner::class)
class UriInterceptPresenterTest {

 //-----Test cases-----

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM