2015-12-10 51 views
0

我有一个write()函数。此功能将文本输出到文本文件,我想测试输出。测试输出内容到文件

public class Item { 

    String itemOne, itemTwo; 

    public Item(String itemOne, String itemTwo) { 
     this.itemOne = itemOne; 
     this.itemTwo = itemTwo; 
    } 

    public String getItemOne() { 
     return itemOne; 
    } 

    public String getItemTwo() { 
     return itemTwo; 
    } 

    public static void main(String args[]) { 
     File outFile = new File("out.txt"); 
     ArrayList<Item> item = new ArrayList<Item>(); 
     FileWriter fw = new FileWriter(outFile.getAbsoluteFile()); 
     BufferedWriter bw = new BufferedWriter(fw); 

     item.add(new Item("Item 1", "Item 2")); 
     item.add(new Item("Item 3", "Item 4")); 
     write(bw,item); 
    } 

    public static void write(BufferedWriter bw,ArrayList<Item> item) throws IOException { 
     for(int i = 0; i < item.size(); i++) { 

      bw.write(item.get(i).getItemOne() + "," + item.get(i).getItemTwo()); 
      bw.newLine(); 

     } 
     bw.close(); 
    } 
} 

我试着写测试用例,但我不知道我应该怎么写

public class TestCase { 
    TestCase testCase = new TestCase(); 
    @Test 
    public void testOutputToFile() throws IOException { 
     File outFile = new File("out.txt"); 
     ArrayList<Item> itemList = new ArrayList<Item>(); 
     FileWriter fw = new FileWriter(outFile.getAbsoluteFile()); 
     BufferedWriter bw = new BufferedWriter(fw); 

     itemList.add(new Item("Item1","Item2")); 
     itemList.add(new Item("Item3","Item4")); 

     assertEquals(new Item("Item1","Item2")), bw); 
     assertEquals(new Item("Item3","Item4")), bw); 
    } 
} 

请帮助。我运行TestCase.java后得到了StackoverflowError

+0

不必都在你的代码片段粘贴代码。什么是“路线”? – Mike

+0

对不起,应该是项目。错字 – user3820292

+0

我更新了我的代码 – user3820292

回答

3

这实际上取决于你想要测试的行为。如果你正试图输出验证到BufferedWriter,我会建议它包裹一个StringWriter左右,然后再验证其内容如下所示:

import static org.junit.Assert.assertEquals; 

import java.io.BufferedWriter; 
import java.io.IOException; 
import java.io.StringWriter; 
import java.util.ArrayList; 
import java.util.List; 
import org.junit.Test; 

public class ItemTest { 
    @Test 
    public void testOutputToFile() throws IOException { 
     List<Item> itemList = new ArrayList<Item>(); 
     StringWriter sw = new StringWriter(); 
     BufferedWriter bw = new BufferedWriter(sw); 

     itemList.add(new Item("Item1","Item2")); 
     itemList.add(new Item("Item3","Item4")); 

     Item.write(bw, itemList); 

     String string = sw.toString(); 
     String expectedString = "Item1,Item2" + System.lineSeparator() + "Item3,Item4" + System.lineSeparator(); 

     assertEquals(expectedString, string); 
    } 
}