DatagramPacket을 생성자로 사용하는 클래스의 단위 테스트를 작성하려고합니다. 테스트 (첫 번째)와 테스트 할 클래스 (두 번째)를 아래에 모두 포함했습니다.최종 클래스 mock이 예상 값을 반환하지 않음
문제점은 내 when(). thenReturn 호출을 기반으로 예상 한 결과가 없다는 것입니다. 내 테스트에는 세 개의 print 문이있다. 첫 번째 코드 블록에서 test() 메서드의 맨 아래를 보라. 그것의 출력은
IP : 0.0.0.0, 포트 : 0, 데이터 :
내가 의도 한 출력은 다음과 같습니다
IP : 90.35.52.52, 포트 : 25200, 데이터 : 하트 비트^0a522
예상되는 출력을받지 못하는 이유를 알고있는 사람이 있습니까?
감사합니다.
UDPPacket_TEST.java
import static org.mockito.Mockito.*;
import java.net.DatagramPacket;
import java.net.InetAddress;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.powermock.api.mockito.PowerMockito;
import org.powermock.core.classloader.annotations.PrepareForTest;
import org.powermock.modules.junit4.PowerMockRunner;
@RunWith(PowerMockRunner.class)
@PrepareForTest(DatagramPacket.class)
public class UDPPacket_TEST {
DatagramPacket mDatagramPacket;
UDPPacket mPacket;
@Before
public void setup() {
PowerMockito.mockStatic(DatagramPacket.class);
mDatagramPacket = PowerMockito.mock(DatagramPacket.class);
InetAddress addRet = mock(InetAddress.class);
when(addRet.getHostAddress()).thenReturn("90.35.52.52");
PowerMockito.when(mDatagramPacket.getPort()).thenReturn(25200);
}
@Test
public void test() {
byte[] packetData = "heartbeat^0a552".getBytes();
PowerMockito.when(mDatagramPacket.getData()).thenReturn(packetData);
mPacket = new UDPPacket(mDatagramPacket);
System.out.println(String.format("IP: %s, Port: %d, Data: %s", mPacket.getIP(), mPacket.getPort(), mPacket.getData()));
}
}
UDPPacket.java는
public class UDPPacket {
String mIP;
int mPort;
String mData;
public UDPPacket(DatagramPacket receivedPacket) {
//Grab the information out
mData = new String(receivedPacket.getData());
mIP = receivedPacket.getAddress().getHostAddress();
mPort = receivedPacket.getPort();
}
public String getIP() {
return mIP;
}
public int getPort() {
return mPort;
}
public String getData() {
return mData;
}
}
신난다, 작동한다! 나는 그 해명을 고맙게 생각한다, 피터. – Psygohn