ドミトリーソコロフ:
私は、オブジェクトをあざけるためのテストクラスのコンストラクタを使用します。しかし、私は、各テストメソッドからオブジェクトをあざけるスタブのパラメータを設定します。私は、テストクラスのコンストラクタのパラメータを使用してみましたが、JUnitはこれを制限します:
java.lang.Exception: Test class should have exactly one public zero-argument constructor
私は、この目的のために何を使うべきでしょうか?
今、私は店のモックのために別のクラスを使用して、それがうまく見えません
package testci
import org.junit.Test
import org.mockito.Mockito.*
interface Object {
fun get(p: Int): Int
}
class setUpMock(val param: Int, val param2: Int) {
val mock = mock(Object::class.java)!!
init {
`when`(mock.get(param)).thenReturn(param2)
}
}
class HelloTest {
@Test
fun `first test`() {
val sMock = setUpMock(1,2)
println(sMock.mock.get(1))
}
@Test
fun `second test`() {
val sMock = setUpMock(1,3)
println(sMock.mock.get(1))
verify(sMock.mock).get(1)
}
}
davidxxx:
デフォルトのJUnit 4ランナーは、このような機能を提供していません:パラメータ化テストを。
これを使用するには、あなたがあなたのクラスに注釈を付ける必要があるParameterized
ランナークラスと定義する@Parameterized.Parameters
各シナリオのパラメータ値を設定する関数を。
例えば :
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
import org.junit.runners.Parameterized.Parameters;
@RunWith(Parameterized::class)
class HelloTest(val param1: Int, val param2: Int) {
companion object {
@JvmStatic
@Parameterized.Parameters
fun data() = listOf(
arrayOf(1, 2),
arrayOf(1, 3)
)
}
@Test
fun `first test`() {
val sMock = setUpMock(param1, param2)
println(sMock.mock.get(1))
}
@Test
fun `second test`() {
val sMock = setUpMock(param1, param2)
println(sMock.mock.get(1))
verify(sMock.mock).get(1)
}
}
いいえ、コードをテストしたが、あなたのアイデアを得る必要があります。