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测试。