PreferenceFragment的Android单元测试

PreferenceFragment的Android单元测试,android,unit-testing,junit,preferencefragment,Android,Unit Testing,Junit,Preferencefragment,我有几个PreferenceFragment类需要测试: public class MyPref extends PreferenceFragment 如何测试它们 例如,我试图: public class MyPrefTester extends ActivityInstrumentationTestCase2<MyPref> 公共类MyPrefTester扩展了ActivityInstrumentationTestCase2 但是,这会失败,因为此Android测试类要求

我有几个PreferenceFragment类需要测试:

public class MyPref extends PreferenceFragment
如何测试它们

例如,我试图:

public class MyPrefTester extends ActivityInstrumentationTestCase2<MyPref> 
公共类MyPrefTester扩展了ActivityInstrumentationTestCase2
但是,这会失败,因为此Android测试类要求参数继承自Activity。PreferenceFragment继承自Fragment(由活动使用)


有什么建议吗?

过去几周我一直在研究同一个问题,以下是我的方法:

  • 为将从中实例化此片段的活动创建ActivityInstrumentationTestCase2
  • 使用robotium库转到首选项片段屏幕
  • 使用robotium进行更改
  • 修改片段的onDestroy方法,通过对首选项的更改来广播意图
  • 在用于此测试用例的ActivityInstrumentationTestCase2中创建广播接收器
  • 从此片段返回以确保保存首选项并调用onDestroy
  • 在onDestroy接收到意图时,保存更改
  • 返回片段,确保收到的保存值与所示值相同。 希望这能有所帮助

  • 我不知道您是否熟悉Model View Presenter模式,但如果片段位于接口后面,则单独测试Presenter逻辑会更容易。您正在尝试对片段使用ActivityInstrumentationTestCase2。这显然行不通,在活动中使用它。