- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我为我的 InstrumentationTestCase
子类编写了一个通用的 shellCommand
函数。对 executeShellCommand
的调用有效(命令已执行),但我对返回的 ParcelFileDescriptor
做错了,因为它似乎返回了垃圾。这是我的通用 shellCommand
函数 -
public String shellCommand(String str)
{
UiAutomation uia = getInstrumentation().getUiAutomation();
ParcelFileDescriptor pfd;
FileDescriptor fd;
InputStream is;
byte[] buf = new byte[1024];
String outputString = null;
try
{
pfd = uia.executeShellCommand(str);
fd = pfd.getFileDescriptor();
is = new BufferedInputStream(new FileInputStream(fd));
is.read(buf, 0, buf.length);
outputString = buf.toString();
Log.d(TAG, String.format("shellCommand: buf '%s'",outputString));
is.close();
}
catch(IOException ioe)
{
Log.d(TAG, "shellCommand: failed to close fd");
}
return outputString;
}
这是我调用它的 fragment -
String output = shellCommand("ls -al /");
Log.d(TAG, String.format("root dir = {%s}", output));
我希望收到命令的输出字符串(在本例中,是顶级目录列表)。相反,我看到了以下日志 -
shellCommand: buf '[B@1391fd8d'
我对 Java 不是很了解,我只是用它来编写一些自动化测试。我显然在使用 ParcelFileDescriptor
或 BufferedInputStream
做错了什么,有人可以解释一下吗?
最佳答案
toString()方法实际上并不将字节数组的内容转换为字符串。它返回“对象的字符串表示”。在这种情况下,'[B@1391fd8d' 表示“哈希码为 1391fd8d 的字节数组”- 不是很有用吗?
您可以使用新的 String(byte[]) 将 byte[] 转换为 String构造函数。
但是 BufferedReader.readLine() 可能更容易使用直接从每行输出中获取一个字符串。
关于java - Android:使用从 InstrumentationTestCase 中的 UiAutomation.executeShellCommand() 返回的 ParcelFileDescriptor,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30800862/
我是 Android 开发的新手,刚刚在 Android Studio 中尝试了单元测试。我有 2 个问题, 每次我需要运行测试时,我都需要为派生自 InstrumentationTestCase 的
我有一个 ActivityInstrumentationTestCase2(它是 InstrumentationTestCase 的一个子类)。运行我的测试用例时,我需要使用自定义 TestAppli
我想通过单元测试来测试通知是否能够播放 Assets 中的自定义声音。该测试并不意味着要验证任何内容,我将其编写为一种快速演示功能的方法,同时又不会弄乱主应用程序代码。 所以在测试项目中,我在/res
我的一位 QA 工程师正在支持一个具有相当大的代码库和许多不同 SharedPreferences 文件的应用程序。前几天他来找我询问如何在测试运行之间重置应用程序状态,就好像它已被卸载-重新安装一样
我正在使用 InstrumentationTestCase 对我的应用程序的组件进行单元测试。 该组件将数据保存到内部存储并使用 Context::fileList(); 检索保存的文件。 我遇到以下
我一直在看这个答案:https://stackoverflow.com/a/2055455/281460它很好地解释了可用于 Android 单元/集成测试的不同测试类。不过,它没有解释的一件事是 I
我正在使用 Android Studio 1.2.2 创建一些 Junit 测试。这是我的测试类。它从 ActivityTestCase(或 InstrumentationTestCase)扩展而来。
我为我的 InstrumentationTestCase 子类编写了一个通用的 shellCommand 函数。对 executeShellCommand 的调用有效(命令已执行),但我对返回的 Pa
我正在实现一个测试自动化工具,我有一个扩展 InstrumentationTestCase 的类。例如: public class BaseTests extends InstrumentationT
我的一些旧测试使用 Android Studio 1.1.0 的新单元测试支持功能运行。运行 gradlew testDebug 时,测试会运行,但所有需要 Context 的测试都会失败,因为 ge
我是一名优秀的程序员,十分优秀!