可能只是我失明,但爲什麼我會在「when(sqldummy.getAllMembers())。thenReturn(mockedMemberList);」時得到一個空指針異常? 第一次嘗試Mockito,所以我可能會有不好的實現。 (我不太確定)。Nullpointer異常 - JAVA Mockito
我一直在盲目地盯着自己一會兒。系統輸出調試沒有產生任何除null之外的真實信息。
我試着將整個代碼從@before移到實際的方法中,並且它在那裏工作。但是這很醜陋,@Before就是這樣處理重複的代碼,否則我必須添加到我創建的其他每個測試方法中。
請幫忙。
public class TestShipHandling extends TestCase{
private static ShipHandling shipHandling;
private static SQLDUMMY sqldummy;
private static ArrayList<Member> mockedMemberList;
private static ArrayList<Ship> mockedShipList;
@Before
public void before() {
sqldummy = mock(SQLDUMMY.class);
mockedMemberList = new ArrayList<>();
mockedShipList = new ArrayList<>();
shipHandling = new ShipHandling(sqldummy); //Instance shiphandling class with mocked SQLDUMMY
Member m1 = new Member();
m1.setMemberFirstName("Max");
m1.setMemberLastName("W0w");
m1.setMemberID("MW222");
mockedMemberList.add(m1);
System.out.println(mockedMemberList);
Member m2 = new Member();
m2.setMemberFirstName("Andrew");
m2.setMemberLastName("Gower");
m2.setMemberID("AG222");
mockedMemberList.add(m2);
Member m3 = new Member();
m3.setMemberFirstName("Maximum");
m3.setMemberLastName("Crispness");
m3.setMemberID("MC999");
mockedMemberList.add(m3);
Ship s = new Ship();
s.setShipName("qweqwe");
s.setShipClass("big");
s.setShipGunCaliber(300);
s.setShipLength(200);
s.setShipNGuns(30);
mockedShipList.add(s);
}
@After
public void after() {
System.out.println(mockedMemberList);
mockedMemberList.clear();
mockedShipList.clear();
}
@Test
public void testAddShipReturnsTrue() throws Exception {
when(sqldummy.getAllMembers()).thenReturn(mockedMemberList);
Member tempMem = sqldummy.getAllMembers().get(0);
String shipName = "Victorium";
String shipClass = "Battleship";
int shipGunCaliber = 305;
int shipLength = 320;
int shipNGuns = 10;
assertTrue(shipHandling.addShip(tempMem, shipName, shipClass, shipGunCaliber, shipLength, shipNGuns));
}
請在標題 – arisalexis
我想'shipHandling.addShip'正在訪問的sqldummy方法返回null,則使用唯一信息。 –
更改此行成員tempMem = sqldummy.getAllMembers()。get(0); to List list = sqldummy.getAllMembers(); Member tempMem = list.get(0); – mvlaicevich