小编Jav*_*209的帖子

Robolectric + PowerMock + Mockito无法正常工作

我很难得到这种罕见的组合作品,但我没有运气.我的项目使用JUnit + Mockito + Robolectric进行测试和Roboguice进行注射,当我将PowerMock添加到方程式时发生了奇怪的事情,这是我尝试过的一些事情:

1.-开箱即用的PowerMock + Mockito + Robolectic集成.正如在PowerMockIngration上所建议的那样,我添加了一个@PowerMockRunnerDelegate包括我的自定义运行器,它包括RobolectricGradleTestRunner:

的build.gradle

  testCompile 'org.powermock:powermock-module-junit4:1.6.4'
  testCompile 'org.powermock:powermock-api-mockito:1.6.4'
Run Code Online (Sandbox Code Playgroud)

测试

@RunWith(PowerMockRunner.class)
@PowerMockRunnerDelegate(MyCustomRunner.class)
@Config(constants = BuildConfig.class)
@PowerMockIgnore({"org.mockito.*", "org.robolectric.*", "android.*"})
@PrepareForTest(RoboGuice.class)
public class Test {

  @Before
  public void setUp() throws Exception {
    PowerMockito.mockStatic(RoboGuice.class);
    ....
  }
Run Code Online (Sandbox Code Playgroud)

结果:

java.lang.IllegalArgumentException: Cannot subclass final class class roboguice.RoboGuice at org.mockito.cglib.proxy.Enhancer.generateClass(Enhancer.java:447) 
 at org.mockito.cglib.core.DefaultGeneratorStrategy.generate(DefaultGeneratorStrategy.java:25)
    at org.mockito.cglib.core.AbstractClassGenerator.create(AbstractClassGenerator.java:217)
    at org.mockito.cglib.proxy.Enhancer.createHelper(Enhancer.java:378)
    at org.mockito.cglib.proxy.Enhancer.createClass(Enhancer.java:318)
    at org.powermock.api.mockito.repackaged.ClassImposterizer.createProxyClass(ClassImposterizer.java:123)
    at org.powermock.api.mockito.repackaged.ClassImposterizer.imposterise(ClassImposterizer.java:57)
    at org.powermock.api.mockito.internal.mockcreation.MockCreator.createMethodInvocationControl(MockCreator.java:111)
    at org.powermock.api.mockito.internal.mockcreation.MockCreator.mock(MockCreator.java:59)
    at org.powermock.api.mockito.PowerMockito.mockStatic(PowerMockito.java:70)
    at com.humana.vitalityapp.activity.BaseVitalityActivityTest.setUp(BaseVitalityActivityTest.java:79)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) …
Run Code Online (Sandbox Code Playgroud)

junit android roboguice robolectric powermockito

10
推荐指数
1
解决办法
1574
查看次数

FragmentStatePagerAdapter,childFragmentManager和orientation更改了一个坏的组合?

这是我的问题,我有一个活动,其中包含一个使用ViewPager的Fragment(FragmentStatePagerAdapter),当Activity首次加载时,所有工作都很完美,但是当设置setRetainInstance(true)到父片段时(一个)使用寻呼机),以及活动的方向变化,它会导致

java.lang.IllegalStateException:没有活动

在尝试添加已保存的片段时,以下是代码:

活动:

public class DetailActivity{

...
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.frame_layout_with_progress_container);

    ...

    // However, if we're being restored from a previous state,
    // then we don't need to do anything and should return or else
    // we could end up with overlapping fragments.
    FragmentManager fm = getSupportFragmentManager();
    if (savedInstanceState != null) {
        Fragment f = fm.findFragmentById(R.id.container);
        if(f instanceof DetailPagerFragment){
            detailPagerFragment = (DetailPagerFragment) f;
        }
    }
}

@Override
protected void onPostResume() {
    super.onPostResume();

    //If fragment is …
Run Code Online (Sandbox Code Playgroud)

java android android-fragments android-viewpager fragmentstatepageradapter

3
推荐指数
1
解决办法
1635
查看次数