我正在尝试对班级进行单元测试。
上课就像
class Manager{
class Handler extends Thread{
Socket socket = null;
BufferedReader in = null;
public Handler(Socket s){
socket = s;
try{
in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
}
catch(IOException e){
...
}
}
}
}
并且也有单元测试代码,例如
@Test
public void testHandler(){
Socket s = mock(Socket.class);
Handler h = Manager.new Handler(s);
InputStream is = new ByteArrayInputStream(new String("Hello").getBytes());
try {
when(s.getInputStream()).thenReturn(is);
} catch (IOException e) {
e.printStackTrace();
}
assertNotNull(h.in);
}
但是,我可以看到一条错误消息。错误原为
time, myPackage.Manager$Handler <init>
serious: null
java.net.SocketException: Socket is closed
at java.net.Socket.getInputStream(Unknown Source)
at myPackage.Manager$Handler.<init>(Manager.java:70)
at myPackage.Manager$SocketServerThread.run(Manager.java:249)
在行
in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
我怎么解决这个问题?
谢谢你。
您已经将传递Socket
给您的Handler
设置之前when(s.getInputStream()).thenReturn(is);
。
尝试这个
@Test
public void testHandler(){
Socket s = mock(Socket.class);
InputStream is = new ByteArrayInputStream(new String("Hello").getBytes());
try {
when(s.getInputStream()).thenReturn(is);
} catch (IOException e) {
e.printStackTrace();
}
Handler h = Manager.new Handler(s);
assertNotNull(h.in);
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句