模拟类,Java
我是单元测试的初学者 我想测试我的班级。应用程序在Apache Tomcat上运行 课程:模拟类,Java,java,tomcat,junit,mocking,Java,Tomcat,Junit,Mocking,我是单元测试的初学者 我想测试我的班级。应用程序在Apache Tomcat上运行 课程: MyClass extends Report { public MyClass() { super(); //exception in JUnit } public void doSomething() { GetDataFromSQL(params); // I want to test this } } Report { pu
MyClass extends Report {
public MyClass() {
super(); //exception in JUnit
}
public void doSomething() {
GetDataFromSQL(params); // I want to test this
}
}
Report {
public Report(){
//this throws null pointer exception in my JUnit tests:
ServletContext sc = EnviromentWrapper.getServletContext();
}
//necessary method for MyClass. This method uses also other methods in this class.
public AnyData GetDataFromSQL(params){}
}
你们能不能快速解释一下,如何模拟报表?这是一个复杂的类,我想保留GetDataFromSQL方法的原始代码
或者我可以和Tomcat做点什么 将非web工件绑定到web层是个坏主意。 您的报告根本不应该知道servlet上下文
Mock
EnvironmentWrapper#getServletContext()
返回可用的内容和/或MockServletContext
提供所需内容。我想测试MyClass,而不是Report(不是我的类)@liquide然后使用Mockito、EasyMock等无数模拟库进行模拟报告。您明确表示要保留GetDataFromSQL
中的“复杂代码”,如果没有进一步的信息很难解释。@DaveNewton-我认为这是一个静态的
方法。这会使事情稍微复杂一些,您可以使用power mock设置返回值,然后“播放”“他们回来了,但普通的嘲弄是无济于事的。”BrasSpIdId:我猜我认为这是对静态方法的普通嘲弄: