使用Robolectric 3.0获取测试资源文件的路径

时间:2015-04-09 15:25:54

标签: resources robolectric

我几乎将所有测试迁移到Robolectric 3.0。这是巨大的交易:))

我上次失败测试,​​因为我无法访问用于迁移测试的测试数据库。下一个代码生成NPE:

String filePath = getClass().getResource( "/test.db" ).toURI().getPath();

你知道如何在Robolectric 3.0中获得这个文件的绝对路径吗?我想避免硬编码,因为我想在所有机器上进行测试

1 个答案:

答案 0 :(得分:2)

也许对某人有帮助。我的代码:

private void copyTestDatabase( String resourceDBName )
    throws URISyntaxException, IOException
{
    String filePath = RuntimeEnvironment.application.getPackageResourcePath() + "/src/test/res" + resourceDBName;

    String destinationPath = RuntimeEnvironment.application.getDatabasePath( "<my-db-name>.db" ).getAbsolutePath();

    File to = new File( destinationPath );
    to.mkdirs();
    to.delete();

    Files.copy( new File( filePath ), to );
}

如果您有更优雅的解决方案,请告诉我。发表答案我会接受它