使用 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这个答案我会采纳
我几乎将所有测试都迁移到了 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这个答案我会采纳