java - 我如何为 android fragment 类编写单元测试?

标签 java android android-studio junit robolectric

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

为其编写单元测试

Robolectric

代码如下

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 步-在测试包中创建您的 Activity 测试类。

@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 步-创建 Fragment 测试类以检查 Fragment 是否为 null

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

关于java - 我如何为 android fragment 类编写单元测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58931729/

相关文章:

Android SQL 数据库找不到正确的行

android - 无法解析 R.id.toolbar

java - PagingAndSortingRepository 方法在与 spring data jdbc 一起使用时抛出错误

java - 如何对 Java EE 代码进行单元测试?

java - RAD - JVM 调试端口正在使用中

android - 可以在 Android 12 Splash Screen API 中设置图标的宽度

android - 在录制音频时使麦克风静音

java - 使用 Bean Validation 验证正数

android - Android 开发中 @id 与 @+id 用法的公认做法是什么?

android - Instant Run - 热交换、温交换和冷交换之间的区别