Java 如何为android片段类编写unittest?

Java 如何为android片段类编写unittest?,java,android,android-studio,junit,robolectric,Java,Android,Android Studio,Junit,Robolectric,我正在创建包含该片段的应用程序,为此我想使用 机械分子 代码如下所示 public class PlaybackFragment extends Fragment { private CustomView customView; private MyViewModel MyViewModel; public static PlaybackFragment newInstance() { return new PlaybackFragment(); } @Override publi

我正在创建包含该片段的应用程序,为此我想使用

机械分子

代码如下所示

public class PlaybackFragment extends Fragment {

private CustomView customView;
private MyViewModel MyViewModel;

public static PlaybackFragment newInstance() {
    return new PlaybackFragment();
}

@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container,
                         @Nullable Bundle savedInstanceState) {
    return inflater.inflate(R.layout.fragment, container, false);
}

@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
    super.onViewCreated(view, savedInstanceState);
    initViews(view);
    initControllers();
    subscribeViewModel();
    loadData();
}

private void initViews(View view) {
    // init customView
}

private void initControllers() {
    // click events
}

private void subscribeViewModel() {
    //observer
}

private void loadData() {
    //load data for fragment
}   
}


那么,我如何编写单元测试呢。

在您的build.gradle文件中添加robolectric依赖项:

testImplementation 'org.robolectric:robolectric:4.0'
步骤1在测试包中创建活动测试类

@RunWith(RobolectricTestRunner.class)
public class ActivityTest {

    private ActivityTest  activity;

    @Before
    public void setUp() {
        activity = Robolectric.setupActivity(ActivityTest.class);
    }

    @Test
    public void shouldNotBeNull() {
        assertNotNull(activity);
    }

    @Test
    public void shouldHaveWelcomeFragment() {
        assertNotNull(activity.getFragmentManager().findFragmentById(R.id.welcome_fragment));
    }
}
步骤2-创建片段测试类以检查片段是否为空

@RunWith(RobolectricTestRunner.class)
public class WelcomeFragmentTest {
    @Test
    public void shouldNotBeNull() {
        WelcomeFragment fragment = WelcomeFragment.newInstance();
        startFragment(fragment);
        assertNotNull(fragment);
    }
}

build.gradle文件中添加robolectric依赖项:

testImplementation 'org.robolectric:robolectric:4.0'
步骤1在测试包中创建活动测试类

@RunWith(RobolectricTestRunner.class)
public class ActivityTest {

    private ActivityTest  activity;

    @Before
    public void setUp() {
        activity = Robolectric.setupActivity(ActivityTest.class);
    }

    @Test
    public void shouldNotBeNull() {
        assertNotNull(activity);
    }

    @Test
    public void shouldHaveWelcomeFragment() {
        assertNotNull(activity.getFragmentManager().findFragmentById(R.id.welcome_fragment));
    }
}
步骤2-创建片段测试类以检查片段是否为空

@RunWith(RobolectricTestRunner.class)
public class WelcomeFragmentTest {
    @Test
    public void shouldNotBeNull() {
        WelcomeFragment fragment = WelcomeFragment.newInstance();
        startFragment(fragment);
        assertNotNull(fragment);
    }
}

你到底想测试什么?您的方法正在运行吗?我试图测试所有单击事件。您到底想测试什么?您的方法正在运行吗?我尝试测试所有单击事件。我可以只为片段类编写吗?可以。只需使用欢迎片段测试为什么创建ActivityTest类?这样我就可以测试我的活动类以及片段类,这取决于您编写的测试。如果您检查一些逻辑,那么它将不算作UI测试但是如果您正在检查fragment是否为null,或者是否单击了按钮,或者执行了什么操作,那么这就是UI测试。我可以只为fragment类编写吗?可以。只需使用欢迎片段测试为什么创建ActivityTest类?这样我就可以测试我的活动类以及fragment类,这取决于您正在编写的测试。如果检查一些逻辑,那个么它就不算UI测试了,但若你们正在检查片段是否为null,或者按钮是否被点击,或者执行了什么操作,那个么这就是UI测试。