[英]How to do Unit test on a Button that jumps between activities? (android studio Junit5)
作为标题,我正在使用 java 编写一个 android 应用程序,我想在我的按钮方法上使用Junit5进行单元测试,如下所示:
private void GoToAbout() {
abtBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
v.playSoundEffect(SoundEffectConstants.CLICK);
startActivity(new Intent(MainActivity.this,About.class));
}
});
}
如果用户点击按钮,他们可以从 mainActivity 跳转到 About 活动。
虽然 function 在我的实体手机上测试时效果很好,但你通常如何为这样的方法编写单元测试? (我的意思是它没有 output 供我检查)
我建议你学习 MVP 或任何设计模式。
在我的情况下,MVP应该是这样的。
public class MainActivity extends AppCompatActivity implements MainActivityContract.View {
private MainActivityContract.Presenter presenter = null;
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
...
presenter = new MainPresenter(this);
abtBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
presenter.onAboutButtonClick();
}
});
}
@Override
public void goToAbout() {
abtBtn.playSoundEffect(SoundEffectConstants.CLICK);
startActivity(new Intent(MainActivity.this,About.class));
}}
主持人
public class MainPresenter implements MainActivityContract.Presenter{
private MainActivityContract.View view;
public MainPresenter(MainActivityContract.View view){
this.view = view;
}
@Override
public void onAboutButtonClick() {
view.goToAbout();
}}
合同
public interface MainActivityContract{
interface View{
void goToAbout();
}
interface Presenter{
void onAboutButtonClick();
}}
以及最后的单元测试 class
public class MainTest {
static MainActivityContract.View view = mock(MainActivityContract.View.class);
static MainActivityContract.Presenter presenter;
@BeforeAll
public static void setup(){
presenter = new MainPresenter(view);
}
@Test
public void testAboutButtonIsClick(){
presenter.onAboutButtonClick();
verify(view, times(1)).goToAbout();;
}}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.