我在Travis CI上的模拟器上运行Android检测测试。以下测试用例调用helper method per method reference:
@Test
public void testGetLowEmissionZones_worksAtAll() {
// ...
lowEmissionZone.childZones.forEach(this::testChildZone);
// ...
}
private void testChildZone(@NonNull ChildZone childZone) {
// ...
}
当Travis CI executes这个测试它失败了NoClassDefFoundError
:
ContentProviderTest > testGetLowEmissionZones_worksAtAll[test(AVD) - 4.3.1] FAILED
java.lang.NoClassDefFoundError: -$$Lambda$ContentProviderTest$He_xH9TsDaN0tZU8EqFP1CuQyAM
at ContentProviderTest.testLowEmissionZone(ContentProviderTest.java:151)
如果我更改方法调用,则没有错误:
@Test
public void testGetLowEmissionZones_worksAtAll() {
// ...
for (ChildZone childZone : lowEmissionZone.childZones) {
testChildZone(childZone);
}
// ...
}
我尝试了openjdk8和oraclejdk8,都失败了。
如何继续使用方法引用?
可能你正面临这个问题,因为在Jelly Bean中没有forEach(Consumer<?> consumer)
。
如您所见,测试在4.3.1上失败了。确保这与AVD的API级别相关。确保代码在API级别24以后正常运行。