Android 预期结果和实际结果是一样的,为什么它告诉我它们是不同的呢?
我今天使用了机器人,但是,我遇到了一些问题,我找不到解决方案 主要活动:Android 预期结果和实际结果是一样的,为什么它告诉我它们是不同的呢?,android,Android,我今天使用了机器人,但是,我遇到了一些问题,我找不到解决方案 主要活动: public class MainActivity extends AppCompatActivity { private TextView textView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setConten
public class MainActivity extends AppCompatActivity {
private TextView textView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textView=(TextView)findViewById(R.id.textView1);
textView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent=new Intent(MainActivity.this,SecondActivity.class);
startActivity(intent);
}
});
}
}
维护活动测试:
@RunWith(RobolectricTestRunner.class)
@Config(constants = BuildConfig.class,sdk=21)
public class MainActivityTest {
@Test
public void testMainActivity() {
MainActivity mainActivity = Robolectric.setupActivity(MainActivity.class);
mainActivity.findViewById(R.id.textView1).performClick();
Intent expectedIntent = new Intent(mainActivity, SecondActivity.class);
ShadowActivity shadowActivity = Shadows.shadowOf(mainActivity);
Intent actualIntent = shadowActivity.getNextStartedActivity();
Assert.assertEquals(expectedIntent, actualIntent);
}
}
错误消息:
java.lang.AssertionError: expected: android.content.Intent<Intent { cmp=com.example.wyb.test/.SecondActivity }> but was: android.content.Intent<Intent { cmp=com.example.wyb.test/.SecondActivity }>
Expected :android.content.Intent<Intent { cmp=com.example.wyb.test/.SecondActivity }>
Actual :android.content.Intent<Intent { cmp=com.example.wyb.test/.SecondActivity }>
Process finished with exit code 255
我不明白为什么预期结果与实际结果相同,它仍然失败。
assertEquals
将在比较的对象上调用equals
方法,但是equals
在Intent
上没有被覆盖,所以我假设它只是在进行对象引用比较
尝试使用来比较意图
Assert.assertTrue(actualIntent.filterEquals(expectedIntent));
如果filterEquals
对您来说还不够(它会忽略额外的内容),请参阅
Assert.assertTrue(actualIntent.filterEquals(expectedIntent));