繁体   English   中英

如何对在活动之间跳转的按钮进行单元测试? (安卓工作室 Junit5)

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM