Junit测试用例初始化一个类,得到错误



我正在为StandardAlone java类编写一个Junit测试用例。初始化Class对象时,我得到nullPointerException。这是我的密码。任何帮助都非常感谢

这是我的班级

@RunWith(MockitoJUnitRunner.class)
public class ABCGeneratorApplicationTest extends TestCase {
// @Autowired
MyFileReader myFileReader;
public ABCGeneratorApplicationTest (MyFileReader myFileReader) {
this.myFileReader= myFileReader;
}
@Before
public void setUp() throws Exception {

}
@Test
public void instrumentRead()
{
String[] args = {"20180518","0002"};
Stream<Employee> empList= myFileReader.read(args);
Assert.assertNotNull(instrumentStream);
}

实现类

public class MyFileReader {
public Stream<Employee> read(String[] runArguments){
try {
Path path = getFilePath(runArguments);
return Files.lines(path,getEncoding()).skip(1)
.map(this::parseRow)
.filter(this::filterRow);
} catch (IOException e) {
return Stream.empty();
}catch(Exception e) {
e.printStackTrace();
return Stream.empty();
}
}

这是我得到的错误:

java.lang.Exception:测试类应该只有一个公共零参数构造函数

在org.junit.runners.BlockJUnit4ClassRunner.validateZeroArgConstructor(BlockJUnit4ClassRunner.java:171(在org.junit.runners.BlockJUnit4ClassRunner.validateConstructor(BlockJUnit4ClassRunner.java:148(在org.junit.runners.BlockJUnit4ClassRunner.collectInitializationErrors(BlockJUnit4ClassRunner.java:127(网址:org.junit.runners.ParentRunner.validate(ParentRunner.java:416(org.junit.runners.ParentRunner。(ParentRunner.java:84(org.junit.runners.BlockJUnit4ClassRunner.(BlockJUnit4ClassRunner.java:65(在org.mockito.internal.runners.DefaultInternalRunner$1。(DefaultInternalRunner.java:27(在org.mockito.internal.runners.DefaultInternalRunner。(DefaultInternalRunner.java:27(在sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native方法(sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessor Impl.java:62(在sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessor Impl.java:45(位于java.lang.reflect.Constructure.newInstance(Constructor.java:423(org.mockito.internal.runners.util.RunnerProvider.newInstance(RunnerProvider.java:27(在org.mockito.internal.runners.RunnerFactory.create(RunnerFactory.java:69(在org.mockito.internal.runners.RunnerFactory.createStrict(RunnerFactory.java:40(在org.mockito.junit.MockitoJUnitRunner。(MockitoJUnitRunner.java:152(在sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native方法(sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessor Impl.java:62(在sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessor Impl.java:45(位于java.lang.reflect.Constructure.newInstance(Constructor.java:423(org.junit.internal.builder.AnnotatedBuilder.buildRunner(Annotateduilder.java:104(在org.junit.internal.builder.AnnotatedBuilder.runnerForClass(Annotateduilder.java:86(在org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:59(在org.junit.internal.builders.AllDefaultPossibilities Builder.runnerForClass(AllDefaultPossibility Builder.java:26(在org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:59(在org.junit.internal.requests.ClassRequest.getRunner(ClassRequest.java:33(在com.intellij.junit4.JUnit4DeaTestRunner.startRunnerWithArgs(JUnit4DieTestRunner.java:49(在com.intellij.rt.execution.junit.IideaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:47(在com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:242(在com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:70(

这是因为您的测试类(在本例中为ABCGeneratorApplicationTest(没有任何默认的公共构造函数(因为您只有参数化的构造函数(。只需添加一个默认的公共构造函数,就会解决此异常。。

相关内容

最新更新