8

テストをパラメータ化するために JunitParams を使用しようとしています。しかし、私の主な問題は、パラメーターが特殊文字、チルダ、またはパイプを含む文字列であることです。

import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.ExpectedException;
import org.junit.runner.RunWith;

import junitparams.JUnitParamsRunner;
import junitparams.Parameters;

@RunWith(JUnitParamsRunner.class)
public class TheClassTest {

    @Rule
    public ExpectedException exception = ExpectedException.none();

     @Test
     @Parameters({"AA~BBB"})
     public void shouldTestThemethod(String value) throws Exception {
        exception.expect(TheException.class);

        TheClass.theMethod(value);     
        // Throw an exception if value like "A|B" or "A~B",
        // ie if value contain a ~ or a |
    }
}

チルダで、私は問題ありません。ただし、パイプには例外があります。

java.lang.IllegalArgumentException: wrong number of arguments

パイプはコンマとして、パラメーターの区切りとして使用されます。

別のセパレータを設定する方法はありますか? それとも、これは JunitParams の制限ですか?

4

3 に答える 3

4

区切り文字を設定するオプションは見つかりませんでしたが、Object[][].

次の例を検討してください。

public static Object[][] provideParameters() {
   return new Object[][] {
        new Object[] {"A,B|C"}
    };
}

との両方,|直接使用できるため、テストの可読性が大幅に向上します。

@Parameters(method = "provideParameters")このテスト ファクトリを利用するには、テストに で注釈を付けます。ファクトリを別のクラス (例: @Parameters(source = Other.class, method = "provideParameters")) に移動することもできます。

于 2016-08-12T14:08:15.913 に答える