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

Get path to test resource file with Robolectric 3.0

我几乎将所有测试都迁移到了 Robolectric 3.0。这是一笔不小的交易:)

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

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

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

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

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 );
}

如果您有更优雅的解决方案,请告诉我。 Post这个答案我会采纳