为Robolectrictesting导入正确的AssertThat方法

我试图从Robolectric.org的“ 写你的第一个testing”页面运行testing 。 有问题的testing看起来像这样:

@Test public void clickingLogin_shouldStartLoginActivity() { WelcomeActivity activity = Robolectric.setupActivity(WelcomeActivity.class); activity.findViewById(R.id.login).performClick(); Intent expectedIntent = new Intent(activity, WelcomeActivity.class); assertThat(shadowOf(activity).getNextStartedActivity()).isEqualTo(expectedIntent); } 

我得到这个编译错误: Cannot resolve method 'assertThat(android.content.Intent)

我看到导入这个方法的两种可能性是org.hamcrest.MatcherAssert.assertThatorg.junit.Assert.assertThat ,它们都没有一个单参数assertThat方法,正如在Robolectrictesting中使用的那样。

我的应用程序的build.gradle有这些依赖关系:

 dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) compile 'com.android.support:appcompat-v7:23.1.0' compile 'com.android.support:design:23.1.0' testCompile "org.robolectric:robolectric:3.0" testCompile 'junit:junit:4.12' } 

这个testing使用了什么框架/库?

Solutions Collecting From Web of "为Robolectrictesting导入正确的AssertThat方法"

这不是junit或者hamcrest断言API。 我认为这是Android AssertJ或只是AssertJ

 testCompile 'org.assertj:assertj-core:1.7.1' 

按照下面的问题应该消失。 把第一行放在你的gradle构build文件中

 testCompile 'org.mockito:mockito-core:1.9.5' testCompile 'junit:junit:4.12' import org.junit.Test; import static org.hamcrest.CoreMatchers.is; import static org.hamcrest.MatcherAssert.assertThat; public class SomethingTest { @Test public void testSomething() { assertThat(true, 1>1); } } 

这个链接也应该提供更多的细节, Android Studio和Robolectric