Kotlinでプライベートメソッドをテストする方法は? _androidx.annotation.VisibleForTesting
_から@VisibleForTesting(otherwise = VisibleForTesting.PRIVATE)
を追加しようとしましたが、関数がプライベートになりません
これは私がそれを使用している方法です
_@VisibleForTesting(otherwise = VisibleForTesting.PRIVATE)
fun doSomething() {}
_
[編集]
私はprivate
メソッドをテストすべきではないことを理解していますが、今では常に些細なことです。以下のケースはどうですか。
CsvReaderクラスがあります
_class CsvReader(private val inputStream: InputStream, private val separator: String = "\t") {
fun read(): List<String> {
return read(inputStream.bufferedReader())
}
private fun read(bufferedReader: BufferedReader): List<String> {
val line = bufferedReader.use { it.readLine() } // `use` is like try-with-resources in Java
return parse(line)
}
private fun parse(line: String): List<String> {
return line.split(separator)
}
}
_
そして、私はそれのためにテストを書きました
_class CsvReaderTest {
private val stream = mock<InputStream>()
private val reader = CsvReader(stream)
private val bufferedReader = mock<BufferedReader>()
@Test
fun read() {
whenever(bufferedReader.readLine()).thenReturn("Jakub\tSzwiec")
reader.read(bufferedReader) shouldEqual listOf("Jakub", "Szwiec")
}
@Test
fun readWhenEmpty() {
whenever(bufferedReader.readLine()).thenReturn("")
reader.read(bufferedReader) shouldEqual listOf("")
}
@Test
fun throwIOExceptionWhenReadingProblems() {
whenever(bufferedReader.readLine()).thenThrow(IOException::class.Java)
val read = { reader.read(bufferedReader) }
read shouldThrow IOException::class
}
}
_
残念ながら、テストのためにプライベート関数fun read(bufferedReader: BufferedReader): List<String>
を呼び出す必要があります。なぜなら、File
をモックするとき、_file.bufferedReader
_はNullPointerException
junit のBufferedWriterクラスのモック
oneこれに対する答えのみがあります。試してはいけません。
intentと通信するソースコードを記述します。 private
を作成する場合、それは内部実装の詳細です。次の秒は変更される可能性があります。