我正在运行一些使用junit4和外部junitparams jar的代码。
据我所知,我的代码设置正确,导入也正确……但我的测试方法不断抛出运行时异常,因为它似乎忽略了挂在其中的@parameters注解。
当它到达我的测试方法时,它一直说“java.lang.exception:method-----应该没有参数”
我不确定是什么问题,即使其他人遇到了混合/匹配导入语句等问题。我检查了我的,这里似乎不是这样。
测试运行程序类:
package Chapter8.Wrappers.Tests;
import org.junit.runner.JUnitCore;
import org.junit.runner.Result;
import org.junit.runner.notification.Failure;
public class TestRunner {
public static void main(String[] args){
Result result = JUnitCore.runClasses(StringProcessorTest.class);
for(Failure failures: result.getFailures()) {
System.out.println(failures.toString());
}
System.out.println(result.wasSuccessful());
}
}
还有我的测试类stringprocessortest:
package Chapter8.Wrappers.Tests;
import Chapter8.Wrappers.Challenges.BackwardsString.StringProcessor;
import junitparams.JUnitParamsRunner;
import junitparams.Parameters;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import java.util.Arrays;
import java.util.Collection;
@RunWith(JUnitParamsRunner.class)
public class StringProcessorTest {
private StringProcessor processor;
private final String expectedResult;
private final String inputString;
public StringProcessorTest(String inputString, String expectedResult){
super();
this.inputString = inputString;
this.expectedResult = expectedResult;
}
@Before
public void initialize(){
processor = new StringProcessor();
}
@Parameters
public static Collection stringValues(){
return Arrays.asList(new Object[][] { {"HELLO","OLLEH"},
{"TESTING", "GNITSET"} });
}
@Test
public void objectConstructor_InitializeStringBuilderInside_EqualsPassedString(String inputString, String expectedResult){
Object input;
input = inputString;
processor = new StringProcessor(input);
Assert.assertEquals(expectedResult, processor.printReverseString());
}
}
控制台输出:
Chapter8.Wrappers.Tests.StringProcessorTest: java.lang.Exception: Method objectConstructor_InitializeStringBuilderInside_EqualsPassedString should have no parameters
false
Process finished with exit code 0
2条答案
按热度按时间jk9hmnmh1#
我发现了一些结果——我将@runwith注解的内部更改为
结果证明,我试图将参数传递到@test注解下的方法中,而不仅仅是我的stringprocessortest类的构造函数;我把它们从测试方法中去掉了。它已经警告我了,但我不明白为什么早些时候。
当我重新运行它,它完成没有问题,并运行了两次。
nvbavucw2#
我认为你有两个选择来解决你的问题:
拆下
@Parameters
注解自stringValues()
方法并将其添加到测试方法中,如下所示:或
删除
stringValues()
方法并将@Parameters
直接在测试方法上添加注解: