2015-12-10 57 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); 
    } 
}