检查文件中是否有某个记录

时间:2016-10-31 05:41:48

标签: java junit io bufferedreader filereader

我是新手。我正在进行JUnit测试。这是我正在测试的内容:我有一个包含记录列表的输入文件。如果记录有电子邮件,我必须将其添加到我的输出文件,名为myemailfile.txt

在我的JUnit测试中,我必须测试myemailfile.txt中是否包含email = testEmail@gmail.com的人

有人可以告知如何查看文件,并检查此类记录是否已记录到文件中。

Here is my file:

    First Name,Last Name,Email,Id
    John       ,Dough       ,johnsemail@gmail.com                        ,12345
    Jane       ,Smith       ,mytestemail@gmail.com                        ,86547
    Mary       ,Wells       ,johnsemail@gmail.com                        ,76543

以下是我的测试

@Test
public void isRecordIncludedInEmailFile() throws IOException{       

    String testFile = "C:/Users/myname/myemailfile.txt";
    BufferedReader br = null;
    String line = "";
    String fileSplitBy = ",";

    try {

        br = new BufferedReader(new FileReader(testFile));
        while ((line = br.readLine()) != null) {

            // use comma as separator
            String[] field = line.split(fileSplitBy);

  //read through the file and see if the email that I expect (testEmail@gmail.com) exists in the file
  System.out.println("Email [email= " + field[2] + " , first name=" + field[0] + "]");

  //the line below should assert if "testEmail@gmail.com" exists in the file             
     // assertEquals("testEmail@gmail.com", field[2]);
}

谢谢

1 个答案:

答案 0 :(得分:1)

您似乎错过了单元测试的关键点:您可以使用它们来测试您的java类;不是某个文件包含一些内容。

换句话说,这里要做的是合理的事情:

  1. 创建代表此类记录的,可称为 PersonInformation
  2. 编写读取此类文件的代码,并将文件内容转换为某些数组或 PersonInformation 对象列表
  3. 然后你编写一个单元测试,创建一个包含一些数据的伪造文件;运行代码...并测试找到的预期 PersonInformation 对象,读入并存储在该列表中。
  4. 最后提示:除非这是"学习练习",否则想要手动解析该文件内容。您看,该数据使用CSV格式(逗号分隔值)。编写代码来读取这些数据并解析它...意味着重新发明轮子。那里有很多图书馆为你工作。