[英]How to write a list of objects which also has a list of objects as field in Java
我有 3 個類:測試報告(具有測試執行對象列表)、測試執行(具有測試結果對象列表)和測試結果(字符串名稱和狀態)。 main 中的代碼如下所示:
TestExecution Writer = new TestExecution();
TestResult testResult1P = new TestResult("Test1", TestStatus.PASSED);
TestResult testResult1F = new TestResult("Test2", TestStatus.FAILED);
List<TestResult> testExecutions1 = new ArrayList<>();
testExecutions1.add(testResult1P);
testExecutions1.add(testResult1F);
TestExecution te1 = new TestExecution(testExecutions1);
TestResult testResult2 = new TestResult("Test1", TestStatus.PASSED);
TestResult testResult22 = new TestResult("Test2", TestStatus.PASSED);
List<TestResult> testExecutions2 = new ArrayList<>();
testExecutions2.add(testResult2);
testExecutions2.add(testResult22);
TestExecution te2 = new TestExecution(testExecutions2);
TestResult testResult3 = new TestResult("Test1", TestStatus.PASSED);
TestResult testResult33 = new TestResult("Test2", TestStatus.FAILED);
List<TestResult> testExecutions3 = new ArrayList<>();
testExecutions3.add(testResult3);
testExecutions3.add(testResult33);
TestExecution te3 = new TestExecution(testExecutions3);
TestResult testResult4 = new TestResult("Test1", TestStatus.NOT_EXECUTED);
TestResult testResult44 = new TestResult("Test2", TestStatus.NOT_EXECUTED);
List<TestResult> testExecutions4 = new ArrayList<>();
testExecutions4.add(testResult4);
testExecutions4.add(testResult44);
TestExecution te4 = new TestExecution(testExecutions4);
List<TestExecution> tel = new ArrayList<>();
tel.add(te1);
tel.add(te2);
tel.add(te3);
tel.add(te4);
TestReport testReport = new TestReport(tel);
try {
testReport.write2(tel);
} catch (IOException e) {
e.printStackTrace();
}
return testReport;
}
我在TestReport中做了兩種方法:
public void write2(List<TestExecution> testExecutionList) throws IOException
{
for(int i=0; i<testExecutionList.size(); i++) {
write3(testExecutionList.get(i).getTestResults());
}
}
public void write3(List<TestResult> testResultList) throws IOException {
PrintWriter pw = null;
FileOutputStream fo = null;
File file = null;
try {
file = new File("output2.txt");
pw = new PrintWriter(new FileOutputStream(file));
fo = new FileOutputStream(file);
int datList = testResultList.size();
for (int i = 0; i < datList; i++) {
pw.write(testResultList.get(i).getTestName() + " "+ testResultList.get(i).getTestStatus() +"\n");
}
} finally {
pw.flush();
pw.close();
fo.close();
}
}
它只打印最后兩個測試結果對象:testResult4 和 testResult44
在您的write2方法中,您調用write3 4 次,每次調用時,您都會使用null值再次創建文件。 要修復它,要么創建文件 static,在 write2 中創建它,要么在 write3 中創建之前驗證它不存在。
試試這個方法寫入文件:
public void write2(List<TestExecution> testExecutionList) throws IOException
{
PrintWriter pw = null;
FileOutputStream fo = null;
File file = null;
try {
file = new File("output2.txt");
pw = new PrintWriter(new FileOutputStream(file, true));
fo = new FileOutputStream(file);
for (TestExecution testExecutionListItem : testExecutionList){
for (TestResult testResultItem: testExecutionListItem.getTestResults()){
pw.write(testResultItem.getTestName() + " "+ testResultItem.getTestStatus() +"\n");
}
}
} finally {
pw.flush();
pw.close();
fo.close();
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.