Android JMockit 1.5和Robolectric 2.2的java.lang.NoSuchMethodException

Android JMockit 1.5和Robolectric 2.2的java.lang.NoSuchMethodException,android,junit,robolectric,jmockit,Android,Junit,Robolectric,Jmockit,我正在尝试将JMockit 1.5与robolectric 2.2结合使用,但在尝试创建活动时,我会得到一个java.lang.NoSuchMethodException。我将测试简化为: @RunWith(RobolectricTestRunner.class) //@RunWith(MyTestRunner.class) public class Test_login { @Test public void test_login(@Mocked final Intent in) {

我正在尝试将JMockit 1.5与robolectric 2.2结合使用,但在尝试创建活动时,我会得到一个java.lang.NoSuchMethodException。我将测试简化为:

@RunWith(RobolectricTestRunner.class)
//@RunWith(MyTestRunner.class)
public class Test_login {
  @Test
  public void test_login(@Mocked final Intent in) {
    FragmentActivity frag = Robolectric.buildActivity(MainActivity.class).create().get();
  }
}
但我得到了这个堆栈跟踪:

java.lang.RuntimeException: java.lang.NoSuchMethodException: org.udg.pds.simpleapp_android.roboelectric.Test_login.test_login()
    at org.robolectric.RobolectricTestRunner$2.evaluate(RobolectricTestRunner.java:201)
    at org.junit.runners.BlockJUnit4ClassRunner.runNotIgnored(BlockJUnit4ClassRunner.java:79)
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:71)
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:49)
    at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193)
    at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52)
    at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)
    at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42)
    at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184)
    at org.robolectric.RobolectricTestRunner$1.evaluate(RobolectricTestRunner.java:175)
    at org.junit.runners.ParentRunner.run(ParentRunner.java:236)
    at org.junit.runner.JUnitCore.run(JUnitCore.java:157)
    at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:77)
    at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:195)
    at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:63)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at com.intellij.rt.execution.application.AppMain.main(AppMain.java:120)
Caused by: java.lang.NoSuchMethodException: org.udg.pds.simpleapp_android.roboelectric.Test_login.test_login()
    at java.lang.Class.getMethod(Class.java:1665)
    at org.robolectric.RobolectricTestRunner$2.evaluate(RobolectricTestRunner.java:199)
    ... 19 more
我也尝试过使用这个跑步者:

public class MyTestRunner extends RobolectricTestRunner {
  static { Startup.initializeIfPossible(); }

  public MyTestRunner(Class<?> testClass) throws InitializationError {
    super(testClass);
  }
}
公共类MyTestRunner扩展了RobolectrictTestRunner{
静态{Startup.initializeIfPossible();}
公共MyTestRunner(类testClass)引发初始化错误{
超级(测试类);
}
}
但这并没有什么区别。我尝试了不同的类路径顺序(jmockit、robolectric、junit),但没有成功。当我尝试在测试中使用@Injectable或@mock时,我得到了这个异常。我读了很多书,但都没用


有没有关于问题出在哪里的线索?Thx

发生
NoSuchMethodException
,因为Robolectric自定义JUnit测试运行程序试图查找无参数测试方法
test\u login()
,而不是实际的有参数的测试方法


一种解决方法是仅使用模拟字段(在测试类级别使用
@Mocked
@Injectable
等声明),避免使用模拟参数。

谢谢,这会起作用的!。无论如何,我想知道这是一个总是忽略测试方法中的参数的机器人问题,还是两个框架组合的问题。尝试了这个之后,异常消失了,但是当我尝试设置一些预期时,我得到了这个错误“验证预期的无效位置”。有什么提示吗?