我正在开发使用Android的java.xml.parsers.DocumentBuilder和DocumentBuilderFactory实现从XML文件加载信息的软件.我正在编写我的对象的单元测试,我需要能够提供各种xml文件来运行测试中的代码.我正在使用Eclipse并拥有一个单独的Android测试项目.我找不到将测试xml放入测试项目的方法,以便测试中的代码可以打开文件.
任何关于如何让不同的xml测试文件驻留在测试包中但对被测试代码可见的建议将不胜感激.
以下是我尝试构建单元测试的方法:
public class AppDescLoaderTest extends AndroidTestCase
{
private static final String SAMPLE_XML = "sample.xml";
private AppDescLoader m_appDescLoader;
private Application m_app;
protected void setUp() throws Exception
{
super.setUp();
m_app = new Application();
//call to system under test to load m_app using
//a sample xml file
m_appDescLoader = new AppDescLoader(m_app, SAMPLE_XML, getContext());
}
public void testLoad_ShouldPopulateDocument() throws Exception
{
m_appDescLoader.load();
}
}
Run Code Online (Sandbox Code Playgroud)
这不起作用,因为SAMPLE_XML文件位于测试的上下文中,但AndroidTestCase正在为被测系统提供上下文,该系统无法从测试包中看到资产.
这是每个答案给出的修改后的代码:
public class AppDescLoaderTest extends InstrumentationTestCase
{
...
protected void setUp() …
Run Code Online (Sandbox Code Playgroud) 我需要在资产中获得文件夹的绝对路径.有人喜欢这样的SD卡:
final String sdDir = Environment.getExternalStorageDirectory() + "Files";
Run Code Online (Sandbox Code Playgroud)
我做错了什么?
首先,我尝试以这种方式获得路径(在绿色ractangle中),但我得到"假".然后我评论这个块并尝试从getAssets()获取路径.list(); 但我第一次看到了3个文件夹.
我希望像这样"绿色"大规模,但我需要使用资产中的文件:
帮我获取我的Files文件夹的绝对路径.
我的Android应用程序在资产目录中有一些文件,我想在启动时打开,方法是列出目录中的文件并打开每个文件.我正在尝试使用AssetManager来执行此操作,但它似乎没有像我期望的那样.我的示例代码如下.这是正确的方法还是有更好的方法来做到这一点?
我使用以下方法打印出资产目录树.
void displayFiles (AssetManager mgr, String path) {
try {
String list[] = mgr.list(path);
if (list != null)
for (int i=0; i<list.length; ++i)
{
Log.v("Assets:", path +"/"+ list[i]);
displayFiles(mgr, path + list[i]);
}
} catch (IOException e) {
Log.v("List error:", "can't list" + path);
}
}
Run Code Online (Sandbox Code Playgroud)
从我的Activity的onCreate方法中,我执行以下操作:
final AssetManager mgr = getAssets();
displayFiles(mgr, "/assets");
displayFiles(mgr, "./assets");
displayFiles(mgr, "/");
displayFiles(mgr, "./");
Run Code Online (Sandbox Code Playgroud)
这给了我以下输出
09-29 20:08:27.843: DEBUG/GFlash(6543): //AndroidManifest.xml 09-29 20:08:27.954: DEBUG/GFlash(6543): //META-INF 09-29 20:08:28.063: DEBUG/GFlash(6543): //assets 09-29 20:08:28.233: DEBUG/GFlash(6543): //classes.dex 09-29 20:08:28.383: …