AndroidとかiOSとかモバイル多め。その他技術的なことも書いていきます。

KotilnでTheoryとDataPointsを使ったJUnitのパラメータテストを書く

Kotlinに何も考えずにTheoryとDataPointsを使ったテストを書こうとするとデータがJUnitから参照できずエラーになる。 Kotlinにstaticはないのでcompanion objectを作って@JvmFieldをつけることでJUnitから参照できるようになる。

@RunWith(Theories::class)
class SampleTest {

    companion object {
        @DataPoints
        @JvmField
        var data = listOf(
                1 to 1,
                2 to 4,
                3 to 9
        )
    }

    @Theory
    fun testSquare(testData: Pair<Int, Int>) {
        val result = Calc().square(testData.first)
        assertEquals("expected:" + testData.second + " , result: " + result, 
                      testData.second, result)
    }
}