我需要知道如何测试此类?我应该测试Bufferedreader何时返回非空值?还是测试队列何时为空?
public class DataFromTxtFile {
private Queue<String> myLines;
public DataFromTxtFile(){
this.myLines = new ArrayDeque<>();
}
public void readDataFromFile(File file) throws IOException {
try (BufferedReader bufferedReader = new BufferedReader(new FileReader(file))) {
String line;
while ((line = bufferedReader.readLine()) != null) {
myLines.offer(line);
}
}
}
public String getLine() {
if(myLines.size() == 0) return "";
return myLines.poll();
}
public boolean isFileNullOrEmpty(File file){
if(file == null || file.length()==0){
return true;
}
return false;
}
}
好的,这是我创建的3个示例测试。这是为此方法创建单元测试的好方法吗?目前,即时通讯正在尝试测试我的其他方法。你能给我建议吗?
public class DataFromTxtFileTest {
private DataFromTxtFile dataFromTxtFile;
private ClassLoader classLoader = getClass().getClassLoader();
private File file = new File(classLoader.getResource("example.txt").getFile());
@Rule
public TemporaryFolder temporaryFolder = new TemporaryFolder();
@Before
public void setUp(){
dataFromTxtFile = new DataFromTxtFile();
}
@Test
public void isFileNull(){
File file = null;
assertTrue(dataFromTxtFile.isFileNullOrEmpty(file));
}
@Test
public void isFileEmpty() throws IOException {
File file = temporaryFolder.newFile("testFile.txt");
assertTrue(dataFromTxtFile.isFileNullOrEmpty(file));
}
@Test
public void isCorrectFile() throws IOException {
assertFalse(dataFromTxtFile.isFileNullOrEmpty(file));
}
}
答案 0 :(得分:0)
通常,您应该考虑所有可能的测试用例。 由于文件是您唯一的输入,因此您应该使用输入的所有可能变化来测试这两种方法,以获取所有想要的结果(包括异常)。
对于每个输入,应该有一个输出。 这是一个非常简单的示例,通过对junit的一些研究,您应该能够自行实现测试用例。您可能想要发布测试方法以获取更多问题。 这是一篇小文章,可能会让您入门: https://www.vogella.com/tutorials/JUnit/article.html 但这还不是很深。
请记住,您可以测试方法注释之类的异常是否发生
@Test(expected = IOException.class)