私はjunitを初めて使っていて、自分のプログラムに2つのテストケースを書き込もうとしましたが、引数のタイプが一致しないため、実行できません。 コードを見て、可能であれば適切な解決策を教えてください。 私は単純な変数とその働きについて同じ方法を試しましたが、文字列配列に対しては機能しません。junitの文字列配列入力のテストケースの作成方法(junitの新機能)
ロジッククラス: ここでは、文字列の各文字をスタックにプッシュしようとしています。
public class myClass{
protected double myLogic(String[] exp) {
Stack<Double> s = new Stack<Double>();
String[] expArr = null;
for (int j = 0; j < exp.length; j++) {
expArr = exp[j].split("\\s");
}
for (int i = 0; i < expArr.length; i++) {
if (expArr[i].matches("[0-9]+") || expArr[i].matches("[0-9].+")) {
s.push(Double.parseDouble(String.valueOf(expArr[i])));
}
}
return s.pop();
}
と、これは私のJUnitテストクラスです:
@RunWith(Parameterized.class)
public class MyTestCasess {
public String[] exp=null;
public Double[] pfResult = { 3, 3 };
public MyTestCasess(String[] exp1) {
for(int i=0;i<exp1.length;i++){
exp[i]=exp1[i];
}
}
@Parameters
public static List<String> data() {
String[] data = { "1 2 3", "6 2 3" };
return Arrays.asList(data);
}
@Test
public void testMainCaller() {
myClass objExp = new myClass();
Assert.assertEquals("Result", pfResult, objExp.myLogic(exp));
}
}
ログのエラーメッセージ:
java.lang.IllegalArgumentException: argument type mismatch
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
at java.lang.reflect.Constructor.newInstance(Unknown Source)
at org.junit.runners.parameterized.BlockJUnit4ClassRunnerWithParameters.createTestUsingConstructorInjection(BlockJUnit4ClassRunnerWithParameters.java:43)
at org.junit.runners.parameterized.BlockJUnit4ClassRunnerWithParameters.createTest(BlockJUnit4ClassRunnerWithParameters.java:38)
at org.junit.runners.BlockJUnit4ClassRunner$1.runReflectiveCall(BlockJUnit4ClassRunner.java:266)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
at org.junit.runners.BlockJUnit4ClassRunner.methodBlock(BlockJUnit4ClassRunner.java:263)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
at org.junit.runners.Suite.runChild(Suite.java:128)
at org.junit.runners.Suite.runChild(Suite.java:27)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:86)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:459)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:678)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:382)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:192)
投稿にエラー/ログメッセージを追加してください... – khmarbaise
エラーログはありません。文字列入力がコンソールから取得された場合、コードは正常に動作しています。しかし、Junitテストケースを使用すると失敗します。 Junitのテストケースを適切に実装していない可能性があります。 Junitタブのエラーが「引数の不一致」 – Saurabh
'mvn clean package'を介してコマンドラインでビルドを実行してください... – khmarbaise