【发布时间】: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