我的应用程序有一个资产目录,我在其中转储了一堆我需要在运行时加载的文本文件.
我有一个目录充满了特定类型的资产(即"assets/subdir"),我想加载这个目录中的所有文件,一次一个.
我有这样的代码:
AssetManager assetMgr = getAssets();
String[] assetsIWant = assetMgr.list("subdir");
for(String asset: assetsIWant) {
doAssetyThing(asset);
}
Run Code Online (Sandbox Code Playgroud)
我已经尝试了大量不同版本的参数到assetMgr.list()并且没有到达任何地方.
如果我使用"/",我会返回一个包含"assets"目录的列表,以及一些随机的其他项目(例如META_INF).如果我传递任何其他字符串(如"assets"或"assets /"或"/ assets"或"/ assets /"或"mysubdir"或"/ mysubdir"或"assets/mysubdir"或...)那么我得到回一个空数组.
遗憾的是,文件相当不连贯.
有人知道list()参数的正确公式是什么吗?
我正在尝试使用javax.xml.xpath包在具有多个名称空间的文档上运行XPath表达式,并且我遇到了愚蠢的性能问题.
我的测试文档来自一个真实的生产示例.它大约是600k的xml.该文档是一个相当复杂的Atom提要.
我意识到我正在使用XPath做的事情可以在没有的情况下完成.然而,在其他非常低劣的平台上实现相同的实现表现得非常好.现在,重建我的系统不使用XPath超出了我所能做的范围.
我的测试代码是这样的:
void testXPathPerformance()
{
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
factory.setNamespaceAware(true);
DocumentBuilder builder = factory.newDocumentBuilder();
Document doc = builder.parse(loadTestDocument());
XPathFactory xpf = XPathFactory.newInstance();
XPath xp = xpf.newXPath();
NamespaceContext names = loadTestNamespaces();
//there are 12 namespaces in names. In this example code, I'm using
//'samplens' instead of the actual namespaces that my application uses
//for simplicity. In my real code, the queries are different text, but
//precisely the same complexity.
xp.setNamespaceContext(names);
NodeList nodes = (NodeList) xp.evaluate("/atom:feed/atom:entry",
doc.getDocumentElement(), XPathConstants.NODESET);
for(int i=0;i<nodes.getLength();i++) …Run Code Online (Sandbox Code Playgroud) 我之前从未使用过JUnit,现在我正试图在Android项目上进行设置.
我的测试项目相当复杂,包括一些JNI,但我的测试项目目前是完全无足轻重的.我在网上找到了很多关于如何制作测试项目的例子(看起来完全不同),但似乎无论我遵循哪一个,我都会得到相同的结果.
这是我的JUnit项目代码:
package com.mycompany.myproject.test;
import android.test.AndroidTestCase;
public class SimpleTestCaseExample extends AndroidTestCase {
public void test_testOne() {
fail("Just Always Fail");
}
}
Run Code Online (Sandbox Code Playgroud)
当我运行时,我在Logcat中看到以下内容:
stdout INSTRUMENTATION_STATUS: numtests=2 stdout INSTRUMENTATION_STATUS: test=test_testOne stdout INSTRUMENTATION_STATUS_CODE: 0 stdout INSTRUMENTATION_STATUS: id=InstrumentationTestRunner stdout INSTRUMENTATION_STATUS: current=2 stdout INSTRUMENTATION_STATUS: class=com.mycompany.myproject.test.SimpleTestCaseExample stdout INSTRUMENTATION_STATUS: stream= stdout INSTRUMENTATION_STATUS: numtests=2 stdout INSTRUMENTATION_STATUS: test=testAndroidTestCaseSetupProperly stdout INSTRUMENTATION_STATUS_CODE: 1 stdout INSTRUMENTATION_STATUS: id=InstrumentationTestRunner stdout INSTRUMENTATION_STATUS: current=2 stdout INSTRUMENTATION_STATUS: class=com.mycompany.myproject.test.SimpleTestCaseExample stdout INSTRUMENTATION_STATUS: stream=. stdout INSTRUMENTATION_STATUS: numtests=2 stdout INSTRUMENTATION_STATUS: test=testAndroidTestCaseSetupProperly stdout INSTRUMENTATION_STATUS_CODE: 0 stdout INSTRUMENTATION_RESULT: stream= stdout Test results …