2017-03-27 66 views
4

当我试图通过执行来运行Android测试:摇篮:没有测试发现

./gradlew connectedDebugAndroidTest 

出现以下错误:

com.android.builder.testing.ConnectedDevice > No tests found.[devicename] FAILED 
No tests found. This usually means that your test classes are not in the form that your test runner expects (e.g. don't inherit from TestCase or lack @Test annotations). 
:connectedDebugAndroidTest FAILED 

FAILURE: Build failed with an exception. 

还没有做出任何改变build.gradlegradle-wrapper.properties文件。

问题无法通过更新一切到最新版本(gradle这个,Android插件,构建工具等)

所有测试在以前是成功的解决。什么会导致这种神秘回归?谢谢。

+1

它有时也发生在我身上,这意味着是时候清理项目了。 – azizbekian

+0

@azizbekian有趣的是没有任何改变。我几次清理了这个项目。 –

回答

-1

我觉得这是令人困惑的是,当例外@BeforeClass方法时抛出也显示此错误。通过ADB

@RunWith(AndroidJUnit4.class) 
public class DummyTest { 

    @BeforeClass 
    public static void setUpClass() { 
     throw new RuntimeException("Dummy error"); 
    } 

    @Test 
    public void lalks() throws Exception { 
     assertTrue(true); 
    } 
} 

输出:

运行测试

$ adb shell am instrument -w -r -e debug false -e class com.example.test.DummyTest com.example.test/android.support.test.runner.AndroidJUnitRunner 
Client not ready yet.. 
Started running tests 
Tests ran to completion. 

通过gradle这个输出:

Starting 1 tests on Nexus 5X - 7.1.1 

junit.framework.TestSuite$1 > warning[Nexus 5X - 7.1.1] FAILED 
     junit.framework.AssertionFailedError: No tests found in com.example.test.DummyTest 
     at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:198) 
:connectedAppDebugAndroidTest FAILED 

如果没有例外@BeforeClass方法抛出一切都会好。

+0

我不明白。你声明你还会得到错误**,还有抛出的异常,但是从你的最后一句话我得出这样的想法,如果你不抛出,你不会**错误。 – Julsteri

+0

@Julsteri,主要思想是Gradle显示错误的消息。问题出现在抛出的异常中,但不在丢失的测试中。 –

+0

这与您在原始问题中发布的错误消息完全不同。 – miguel

4

我遇到了问题,请尝试升级测试运行器。从0.4.x升级到0.5解决了它。确保你在你的build.gradle有这些行:

androidTestCompile "junit:junit:4.12" 
androidTestCompile "com.android.support.test:runner:0.5" 
+0

谢谢。在我的情况下,这是不同的原因。我会回答这个问题。但绝对upvote。 –

+0

@AndriiAbramov谨慎分享您的解决方案? – Julsteri

+0

@Julsteri,恩,我已经做了一个月前:) http://stackoverflow.com/a/43388263/5091346 –

1

此错误消息的一个可能的原因是您在测试运行器中的应用程序的早期崩溃。在这种情况下,异常堆栈将在logcat中,但不在gradle输出中。