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

Пожалуйста, помогите. Я получил StackoverflowError после запуска моего TestCase.java

+0

Вам не весь код, вставленный в вашем фрагменте кода. Что такое «маршрут»? – Mike

+0

извините, но товар. typo – 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); 
    } 
} 
Смежные вопросы