运行单元测试时,我的日志行会抛出nullpointer异常。我在本地服务器上运行或上传到appengine时没有错误。我忘了在某处包含测试库吗?
java.lang.NullPointerException
at javax.servlet.GenericServlet.getServletContext(GenericServlet.java:160)
at javax.servlet.GenericServlet.log(GenericServlet.java:254)
at se.stuff.servlet.MyServlet.doGet(MyServlet.java:14)
at se.stuff.MyServletTest.test(MyServletTest.java:14)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
...
我的servlet:
public class MyServlet extends HttpServlet {
@Override
public void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException {
// Do stuff...
log("log stuff");
}
}
我的测试:
public class MyServletTest {
@Test
public void test() throws IOException {
MyServlet s = new MyServlet();
s.doGet(null, null);
}
}
答案 0 :(得分:0)
测试调用s.doGet(null, null)
中的空值导致NullPointerException。 servlet可能很好,但测试没有意义。我建议废弃该测试并首先将一些内容添加到doGet中,然后使用QUnit从外部测试您的servlet。