所以我正在尝试测试以下代码:
@Test
public void faarFalse() throws IOException {
String filStiTilArrangementer = "src/main/java/gruppeeksamen/arrangementer.csv";
String filStiTilLoggetInn = "../../View/loggetInn.fxml";
ObservableList listeFor = FXCollections.observableArrayList();
dataHandler.hentDataHele(filStiTilArrangementer, listeFor);
navnPaaArrangement = "Test arrangement";
datoPaaArrangement = "2020-10-10";
typeIdrettPaaArrangement = "Ski";
leggTilArrangementController.leggeTilArrangementet(navnPaaArrangement, datoPaaArrangement, typeIdrettPaaArrangement, filStiTilArrangementer, filStiTilLoggetInn); //Line 148 ref. error message
ObservableList listeEtter = FXCollections.observableArrayList();
dataHandler.hentDataHele(filStiTilArrangementer, listeEtter);
assertTrue(listeFor.size() < listeEtter.size());
//fjernet linjen som er lagt til
RandomAccessFile f = new RandomAccessFile(filStiTilArrangementer, "rw");
long length = f.length() - 1;
byte b;
do {
length -= 1;
f.seek(length);
b = f.readByte();
} while(b != 10);
f.setLength(length+1);
f.close();
}
正在测试此代码:
public class LeggTilArrangementController {
@FXML
private Button btnGaaTilbake;
public void leggeTilArrangementet(String arrangement, String dato, String idrett, String filstienTilArrangementene, String filstienTilLoggetInn) {
//sjekker om alle "forhåndsregler" er gjort for å kunne legge til et arrangement
if (sjekkOmAlleInputErFyltUt(arrangement, dato, idrett) && sjekkOmdagensDatoErMindreEnnDatePicker(dato) && arrangementPaaSammeDatoIkkeFinnes(arrangement, dato.replace("-","."), idrett)){
//lager en ny linje med navnet på arrangementet, antall utøvere (som fra start skal være 0), utøvere (som fra start skal være tom), datoen (åååå.mm.dd), type idrett
String nyttArrangement = arrangement + ";0"/*antall utøvere*/ + ";" /*utøvere*/ + ";" + dato.replace("-",".") + ";" + idrett + "\n";
//prøver å legge til arrangementet på sisten av arrangementer.csv
try {
FileWriter filenSomSkalSkrivesTil = new FileWriter(filstienTilArrangementene, true);
filenSomSkalSkrivesTil.append(nyttArrangement);
filenSomSkalSkrivesTil.flush();
filenSomSkalSkrivesTil.close();
} catch (IOException e) {
e.printStackTrace();
}
//lukker nåværende vindu
goBack(filstienTilLoggetInn); //Line 76 ref. error message
} else {
MainJavaFX.visAlertFeilmelding("Mangler arrangement, dato eller idrett","Må fylle inn en av delene");
}
}
private void goBack(String filstienTilLoggetInn) {
Stage stage = (Stage) btnGaaTilbake.getScene().getWindow(); //Line 50 ref. error message
stage.close();
DataHandler.sendTilNyScene(filstienTilLoggetInn, "Arrengementer", 500, 500);
}
}
该测试应该测试是否已将新行写入CSV文件,但是当我尝试运行测试时,我得到的只是以下消息:
java.lang.NullPointerException
at gruppeeksamen.Controller.LeggTilArrangementController.goBack(LeggTilArrangementController.java:50)
at gruppeeksamen.Controller.LeggTilArrangementController.leggeTilArrangementet(LeggTilArrangementController.java:76)
at gruppeeksamen.Controller.LeggTilArrangementControllerTest.faarFalse(LeggTilArrangementControllerTest.java:148)
谁知道我为什么收到此错误消息?
PS:当我删除/注释第76行参考时。错误消息,测试正常,但程序无法正常工作。
答案 0 :(得分:0)
查看您突出显示的代码和行可能是由于以下两个原因之一:
btnGaaTilbake.getScene()
btnGaaTilbake
为null或方法getScene()
重新调整为null。请检查两个变量都返回正确的值。