2
我必須測試具有視頻的屏幕飛濺,當視頻完成其他活動時,視頻持續時間爲11秒。測試等待VideoView完成以開始新活動robolectric 3
我有後續的測試類:
public class ScreenSplashTest {
private ShadowActivity screenSplash;
private ShadowVideoView videoView;
@Before
public void setUp(){
ScreenSplash screenSplashActivity = Robolectric.buildActivity(ScreenSplash.class).create().get();
screenSplash = Shadows.shadowOf(screenSplashActivity);
VideoView videoViewWidget = (VideoView)screenSplash.findViewById(R.id.videoViewSplash);
videoView = Shadows.shadowOf(videoViewWidget);
}
@Test
public void activityStarts_VideoStartsToPlay() throws Exception{
assertTrue(videoView.isPlaying());
}
@Test
public void whenVideoFinish_StartsChooseTeamActivity() throws Exception{
videoView.stopPlayback();
Intent nextActivity = screenSplash.getNextStartedActivity();
assertEquals(nextActivity.getComponent().getClassName(), ChooseTeamActivity.class.getName());
}
}
這是我ScreenSplash活動:
public class ScreenSplash extends ActionBarActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_screen_splash);
getSupportActionBar().hide();
this.getWindow().getDecorView().setBackgroundColor(0xffffff);
VideoView videoView = (VideoView) findViewById(R.id.videoViewSplash);
Uri videoFile = Uri.parse("android.resource://" + getPackageName() + "/" + R.raw.splash);
videoView.setVideoURI(videoFile);
videoView.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mediaPlayer) {
Intent i = new Intent(getApplicationContext(), ChooseTeamActivity.class);
startActivity(i);
}
});
videoView.start();
}
}
的問題是我怎麼能寫這樣的代碼測試?
ohh thak你:)我非常喜歡單元測試泰克的指導 – kentverger