【问题标题】:See test output (stdout) in Android Studio在 Android Studio 中查看测试输出 (stdout)
【发布时间】:2017-11-20 00:09:06
【问题描述】:

我已经阅读了与此相关的所有问题,但没有什么对我有用。

  • Android Studio 版本:2.3.3
  • 编译SdkVersion 25
  • buildToolsVersion '26.0.1'
  • Gradle 构建工具版本:2.3.3

我正在尝试做一些非常简单的事情。当我运行测试时,我想查看测试的输出。下面是一些示例代码:

// MyClassTest
@Test
public void myMethodTest() throws Exception {
    System.out.println("Hello from myMethodTest!");
    int res = Whitebox.invokeMethod(MyClass.class, "myMethod", arg1, arg2);
    assertThat(res, is(1));
}

// MyClass
private int myMethod(int arg1, int arg2) {
    System.out.println("Hello from myMethod!");
    return 0;
}

白盒的东西在这里可能并不重要,但我将其包括在内以防万一。当我运行它时,它告诉我的是断言失败。我也得到了"Hello from myMethodTest" 输出,但我无法看到"Hello from myMethod" 输出。这使得很难弄清楚我的方法哪里出错了。我正在记录的 Timber 资料也没有出现。

我尝试通过 GUI 和控制台运行测试,使用 gradle 和 gradlew,以及所有各种选项(--info、--stacktrace 等)。我还尝试了所有here、here 和here 的东西。这肯定是可能的,谢谢。

【问题讨论】:

  • 这是仪器测试 (androidTest/) 还是单元测试 (test/)?
  • 单元测试。如果它也有帮助,我正在使用 Powermockito。我已经尝试在 Windows 机器和 Mac 机器上解决这个问题,并且我尝试升级到 3.0.0 构建工具,这也没有帮助。很难找到测试的常规旧标准输出,这似乎很奇怪。
  • Hmmmm... 即兴发挥,感觉就像 myMethod() 根本没有被调用(大概是通过 Whitebox 东西内部的某处反射)。你有什么证据表明它正在被调用?
  • 天哪,真有见识。我不敢相信我没有考虑过测试这个。我刚刚用 print 语句制作了一个相当于MyClass 的常规公共方法,它就出现了。这么简单的事情,完全看错地方了。非常感谢,非常感谢!
  • 很高兴知道 Timber 输出没有出现在这些单元测试中。

标签: android unit-testing android-studio junit


【解决方案1】:

奥卡姆剃刀说myMethod() 没有被调用。您没有得到日志输出(虽然有证据表明其他地方的日志记录正在工作)并且您基于结果的断言失败。

很高兴知道 Timber 输出没有出现在这些单元测试中

我还没有在单元测试中使用 Timber 来了解当周围没有 Android 和 Log 可以使用时它会做什么。

【讨论】:

  • 非常感谢。如果我确信 stdout 应该出现在测试输出中,我也希望得出这个结论,但我并没有首先向自己保证这一点。谢谢!
猜你喜欢
  • 2013-05-06
  • 2011-07-24
  • 2013-04-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-27
相关资源
最近更新 更多