机电测试

时间:2016-06-30 08:43:21

标签: android

我之前从未使用过任何类型的JUnit,所以我搜索的是一个名为roboelectric的好工具。

我尝试运行一个简单的测试,如他们的网站所示,但是assertThat()和shadowOf()无法识别。

这是测试

@RunWith(RobolectricTestRunner.class)
@Config(constants = BuildConfig.class)
public class MainActivityTest {

@Test
public void clickingLogin_shouldStartLoginActivity() {
    MainActivity activity = Robolectric.setupActivity(MainActivity.class);
    activity.findViewById(R.id.login).performClick();

    Intent expectedIntent = new Intent(activity, LoginActivity.class);
    //This line doesn't work.         
    assertThat(shadowOf(activity).getNextStartedActivity()).
    isEqualTo(expectedIntent);

  }
 }

这就是我如何设置Roboelectric的方式。

apply plugin: 'com.android.application'

android {
compileSdkVersion 24
buildToolsVersion "24.0.0"

defaultConfig {
    applicationId "testing.theo.robotutorial"
    minSdkVersion 14
    targetSdkVersion 24
    versionCode 1
    versionName "1.0"
}
buildTypes {
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'),   
'proguard-rules.pro'
    }
   }
 }

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


 }

有什么想法吗?

感谢。

1 个答案:

答案 0 :(得分:1)

替换为以下断言将起作用。

assertTrue(shadowOf(activity).getNextStartedActivity().filterEquals(expectedIntent));

有关详情,请参阅HoisieRoboelectric github issue #2627的回答。