JUnitは、テストクラスをどのように設定しますか?

ドミトリーソコロフ:

私は、オブジェクトをあざけるためのテストクラスのコンストラクタを使用します。しかし、私は、各テストメソッドからオブジェクトをあざけるスタブのパラメータを設定します。私は、テストクラスのコンストラクタのパラメータを使用してみましたが、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)
    }
}

いいえ、コードをテストしたが、あなたのアイデアを得る必要があります。

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=234370&siteId=1