Android附加文件无法通过单元测试

时间:2016-11-08 12:20:39

标签: android unit-testing

我正在尝试在txt文件上使用android append。 append方法无法通过单元测试。

示例:

我试图追加" 123456"两次得到" 123456123456",但我得到了错误:

junit.framework.ComparisonFailure: expected:<123456[]> but was:<123456[123456]>  

我的问题是<> []<123456[]><123456[123456]>的含义是什么?

我的测试方法如下,我可以通过第一个assertEqual

 public void appendFileCorrect() throws Exception {
            String contentToWrite = "123456";
            Context appContext = InstrumentationRegistry.getTargetContext();
            FileManager manager = new FileManager("jim11.txt");
            manager.append(contentToWrite);
            String file = manager.readFromFile(appContext);
            assertEquals(file, contentToWrite);
            manager.append(contentToWrite);
            String appendFile = manager.readFromFile(appContext);
            assertEquals(appendFile, contentToWrite+contentToWrite);
        }

追加到文件末尾的方法:

public String append(String content) throws IOException {

        try {
            FileOutputStream fOut = new FileOutputStream(filePath);
            OutputStreamWriter myOutWriter = new OutputStreamWriter(fOut);
            myOutWriter.append(content);
            myOutWriter.close();
            fOut.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return fileName;
    }

阅读

的方法
   public String readFromFile(Context context) throws IOException {

        String ret = "";
        try {
            FileInputStream inputStream = context.openFileInput(fileName);
            if (inputStream != null) {
                InputStreamReader inputStreamReader = new InputStreamReader(inputStream);
                BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
                StringBuilder stringBuilder = new StringBuilder();
                String receiveString = "";
                while ( (receiveString = bufferedReader.readLine()) != null ) {
                    stringBuilder.append(receiveString);
                }
                inputStream.close();
                bufferedReader.close();
                ret = stringBuilder.toString();
            }
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
        return ret;
    }

另外我的Android设备没有SD卡,任何方式我可以写到公共场所我可以直接读取文件?现在路径就像&#34; data/data/files/..&#34;

1 个答案:

答案 0 :(得分:0)

更改

 FileOutputStream fOut = new FileOutputStream(filePath);

FileOutputStream fOut = new FileOutputStream(filePath, true);

第二个参数表示是否附加。

追加的另一种方式是:

outputStream = context.openFileOutput(fileName, Context.MODE_APPEND);

Context.MODE_APPEND 模式将检查文件是否存在。如果没有,则创建文件并追加到最后。