class TestLoad {
private static List <String> myList = new ArrayList <String> ();
private static final String filename = "/myfile.txt";
public XYZ generateList(Abc abc) throws Exception {
populateList();
}
private populateList() {
ClassLoader classLoader = TestLoad.class.getClassLoader();
File listfile = new File(classLoader.getResource(
filename).getFile());
List <String> localList = new ArrayList <String> ();
try (Scanner scanner = new Scanner(listfile)) {
while (scanner.hasNextLine()) {
String text = scanner.nextLine();
localList.add(text.trim());
}
scanner.close();
} catch (IOException e) {}
return localList;
}
}
以下是日志供参考:
IllegalStateException:无法转换名为com.xyz.TestLoad的类。原因:java.io.ioException:无效常量类型:在org.powermock.core.classloader.mockClassLoader.loadModifiedClass(MockClassLoader.java:180)在org.powermock.core.classloader.mockClassLoader.java:68)在java.lang.ClassLoader.loadClass(deferSupportingClassLoader.java:357)在java.lang.Class.forName(class.java:348)在java.lang.Class.ForName0 it4.common.internal.impl.junit4TestSuiteChunkerImpl.createDelegatorfromClassLoader(junit4TestSuiteChunkerImpl.java:145)在org.powermock.modules.JUnit4.common.internal.impl.junit4TestSuiteChunkerImpl.jreateDelegatorfromClassLoader(junit4TestSuiteChunkerImpl.java:40)在IMPL.(JUnit4TestSuiteChunkerImpl.java:61)在org.powermock.modules.junit4.common.internal.impl.AbstractCommonPowerMockRunner.(AbstractCommonPowerMockRunner.java:32),org.powermock.modules.junit4.PowerMockRunner.(powerMockRunner.java:34),sun.reflect.nativeConstructorAccessorImpl.NewInstance0(本机方法)
您的测试代码看起来像是在使用PowerMock EasyMock。但是你的帖子也有mockito和PowerMockito的标签。
我用PowerMockito给出下面的解决方案。
主Java类:
public class TestLoad {
private static List<String> myList = new ArrayList<String>();
private static final String filename = "/myfile.txt";
public List<String> generateList(Abc abc) throws Exception {
System.out.println("generateList method is called");
return populateList();
}
private List<String> populateList() {
System.out.println("populateList method is called");
ClassLoader classLoader = TestLoad.class.getClassLoader();
File listfile = new File(classLoader.getResource(filename).getFile());
// Read listfile and build localList logic here
List<String> localList = new ArrayList<String>();
return localList;
}
}
import java.util.ArrayList;
import java.util.List;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Matchers;
import org.mockito.Mockito;
import org.powermock.api.mockito.PowerMockito;
import org.powermock.core.classloader.annotations.PrepareForTest;
import org.powermock.modules.junit4.PowerMockRunner;
@PrepareForTest(TestLoad.class)
@RunWith(PowerMockRunner.class)
public class TestLoadTest {
@Test
public void testPrivateMethod() throws Exception{
List<String> testList = new ArrayList<String>();
testList.add("00");
TestLoad mockInstance = PowerMockito.spy(new TestLoad());
PowerMockito.doReturn(testList).when(mockInstance, "populateList");
List<String> outputList = mockInstance.generateList(new Abc());
System.out.println("test output:" + outputList);
PowerMockito.verifyPrivate(mockInstance, Mockito.times(1)).invoke("populateList");
}
}
generateList method is called
test output:[00]
运行jUnit时的异常 我想测试这个类,下面是测试方法 运行junit会产生以下异常
我提到了这个答案,我该如何模拟java。时间本地日期。now()关于如何模拟我的LocalDateTime。now()调用。我基本上遵循了所有步骤,但只使用了LocalDateTime而不是LocalDate。 我的代码的功能是这样的,它应该只在一小时的第15或45分钟运行。因此,我将LOCAL\u DATE\u TIME静态变量设置为: 然后在我的@Before测试方法中,我有以下内容: 这是2
我是Mockito的新手,正在尝试模拟服务方法。但是,Mockito无法正确模拟函数。 以下是部分测试代码: 课程: 我期待返回一个非空列表。但是,它返回了一个空列表。有人能帮忙吗?
我有一个Spring MVC应用程序。它有控制器、服务和Dao。我只想通过使用Mockito模拟DAO层来测试控制器和服务。 我的控制器类: 我的服务类: 我的测试类: 问题:通过自动连线控制器和服务,它可以很好地执行通话。然而,从服务中,DAO调用的是一个真正的DAO,而不是模拟的DAO。 > 在控制器中保留道并对控制器使用@InjectMock可以正常工作,但是我想在服务中保留道,并且只测试控
当我试图模仿javax.ws.rs.core 时,我得到一条错误消息: 无法创建JAX-RS运行时委托 为什么会发生这种情况? 但是,当我试图嘲笑HttpServlet响应时,这是没有问题的!
问题内容: 我在带有打字稿的React Router v5.1.2中使用UseHistory挂钩吗?运行单元测试时,我遇到了问题。 TypeError:无法读取未定义的属性“ history”。 我也尝试使用,但仍然无法正常工作。 问题答案: 浅化使用的反应功能组件时,我需要相同的内容。 在我的测试文件中解决了以下模拟问题: