如何在Java中编写对象列表,其中还包含对象列表作为字段
我有3个类:testreport(它有一个测试执行对象列表)、testexecution(它有一个测试结果对象列表)和testresult(字符串名称和状态)。main中的代码如下所示:如何在Java中编写对象列表,其中还包含对象列表作为字段,java,file,arraylist,write,Java,File,Arraylist,Write,我有3个类:testreport(它有一个测试执行对象列表)、testexecution(它有一个测试结果对象列表)和testresult(字符串名称和状态)。main中的代码如下所示: TestExecution Writer = new TestExecution(); TestResult testResult1P = new TestResult("Test1", TestStatus.PASSED); TestResult testResu
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;
}
TestExecution编写器=新建TestExecution();
TestResult testResult1P=新的TestResult(“Test1”,TestStatus.PASSED);
TestResult testResult1F=新的TestResult(“Test2”,TestStatus.FAILED);
List testExecutions1=新建ArrayList();
testExecutions1.add(testResult1P);
testExecutions1.add(testResult1F);
TestExecution te1=新的TestExecution(testExecutions1);
TestResult testResult2=新的TestResult(“Test1”,TestStatus.PASSED);
TestResult testResult22=新的TestResult(“Test2”,TestStatus.PASSED);
List testExecutions2=新建ArrayList();
testExecutions2.add(testResult2);
testExecutions2.add(testResult22);
TestExecution te2=新的TestExecution(testExecutions2);
TestResult testResult3=新的TestResult(“Test1”,TestStatus.PASSED);
TestResult testResult33=新的TestResult(“Test2”,TestStatus.FAILED);
List testExecutions3=新建ArrayList();
testExecutions3.add(testResult3);
testExecutions3.add(testResult33);
TestExecution te3=新的TestExecution(testExecutions3);
TestResult testResult4=新的TestResult(“Test1”,TestStatus.NOT_EXECUTED);
TestResult testResult44=新的TestResult(“Test2”,TestStatus.NOT_EXECUTED);
List testExecutions4=新建ArrayList();
testExecutions4.add(testResult4);
testExecutions4.add(testResult44);
TestExecution te4=新的TestExecution(testExecutions4);
List tel=new ArrayList();
电话:te1;
电话地址(te2);
电话:te3;
电话地址(te4);
TestReport TestReport=新的TestReport(电话);
试一试{
testReport.write2(电话);
}捕获(IOE异常){
e、 printStackTrace();
}
返回测试报告;
}
我在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();
}
}
public void write2(列表testExecutionList)引发IOException
{
对于write2方法中的(int i=0;i,您将调用write3 4次,每次调用write3时,您都会使用空值再次创建文件。若要修复此问题,请将文件设置为静态,以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();
}
}
public void write2(列表testExecutionList)引发IOException
{
PrintWriter pw=null;
FileOutputStream fo=null;
File=null;
试一试{
file=新文件(“output2.txt”);
pw=新的PrintWriter(新的FileOutputStream(file,true));
fo=新文件输出流(文件);
for(TestExecution testExecutionList:testExecutionList){
对于(TestResult testResultItem:testExecutionListItem.getTestResults()){
write(testResultItem.getTestName()+“”+testResultItem.getTestStatus()+“\n”);
}
}
}最后{
pw.flush();
关闭();
fo.close();
}
}