测试写入日志文件的 Android 类的最佳方法

问题描述

我有一个关于如何最好地测试我正在为 Android 工作的记录器类的问题。这个记录器类在“实际”使用期间写入内部存储中的 Android 日志文件,但我试图找出模拟它以进行测试的最佳方法,因为 getFilesDir() 在仪器测试期间。

理想情况下,我可以在测试期间从我的记录器类中写入日志文件,然后在测试期间读取该文件,检查我的日志是否符合预期。

我环顾四周并尝试在我的测试中为此目的使用 TemporaryFolder。我能够从我的测试类中漂亮地读取和写入这个文件,但是我无法从测试实例中的 MyLogger 类中写入这个文件。在我的 MyLogger 类构造函数中,我试图在测试期间在 TemporaryFolder 目录中创建一个文件,我收到此错误

打开失败:EROFS(只读文件系统)

你能帮助我了解测试记录器类的最佳方式吗?我想在这里使用实际文件的原因之一是,如果可能的话,我还想对文件轮换进行测试覆盖。

仪器测试

java.util.concurrent.TimeoutException
    at java.util.concurrent.CompletableFuture.timedGet(CompletableFuture.java:1771)
    at java.util.concurrent.CompletableFuture.get(CompletableFuture.java:1915)
    at FutureWithCollector.finalize(FutureWithCollector.java:23)
    at FutureWithCollector.main(FutureWithCollector.java:15)
0

类构造器

@RunWith(AndroidJUnit4.class)
public class MyLoggerTest{
    @Rule public TemporaryFolder mTempFolder = new TemporaryFolder();
    @Test
    public void testCreateLogFile() {
        try {
            mTempFolder.newFolder("baseFolder");
            MyLogger logger = new MyLogger(mTempFolder + "/baseFolder/");
        } catch(Exception e) {
            fail(e.getMessage());
        }
    }
}

谢谢!我爱你 Stack Overflow 社区!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)