簡體   English   中英

如何在 Java 中編寫一個對象列表,其中還包含一個對象列表作為字段

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM