首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法找到参数类型为(S)的com.example.trial.myapplication.MyActivity中的方法“com.example.trial.myapplication.MyActivity”[]

无法找到参数类型为(S)的com.example.trial.myapplication.MyActivity中的方法“com.example.trial.myapplication.MyActivity”[]
EN

Stack Overflow用户
提问于 2014-08-14 13:32:38
回答 1查看 281关注 0票数 0

最近,我开始考虑使用Robolectric插件来测试我的一个应用程序。插件本身很容易在项目中安装到项目中,但在尝试运行示例测试时,我仍然遇到同样的错误。我的代码如下:

我的活动

代码语言:javascript
复制
package com.example.trial.myapplication;

import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;


public class MyActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_my);
}


@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.my, menu);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    int id = item.getItemId();
    if (id == R.id.action_settings) {
        return true;
    }
    return super.onOptionsItemSelected(item);
}


public void emptyMethod(String empty) {

}
}

我的罗比测试

代码语言:javascript
复制
package com.example.trial.myapplication;

import android.app.Application;
import android.test.ApplicationTestCase;
import android.test.suitebuilder.annotation.SmallTest;

import org.junit.Before;
import org.junit.runner.RunWith;
import org.robolectric.Robolectric;
import org.robolectric.RobolectricTestRunner;

@RunWith(RobolectricTestRunner.class)
public class ApplicationTest extends ApplicationTestCase<Application> {
private MyActivity myActivity;

public ApplicationTest() {
    super(Application.class);
}

@Before
public void setUp() throws Exception {
    myActivity = Robolectric.buildActivity(MyActivity.class).create().get();
}

@SmallTest
public void testSomething() throws Exception {
    assertTrue(myActivity != null);
}
}

运行测试应用程序将引发以下错误,指向安装方法中的代码。

代码语言:javascript
复制
org.fest.reflect.exception.ReflectionError: Unable to find method '$$robo$getData' in com.example.ronand.myapplication.MyActivity with parameter type(s) []
at org.fest.reflect.method.Invoker.lookupInClassHierarchy(Invoker.java:78)
at org.fest.reflect.method.Invoker.createInvoker(Invoker.java:60)
at org.fest.reflect.method.Invoker.newInvoker(Invoker.java:55)
at org.fest.reflect.method.MethodReturnType.in(MethodReturnType.java:66)
at org.robolectric.bytecode.ShadowWrangler.shadowOf(ShadowWrangler.java:434)
at org.robolectric.Robolectric.shadowOf_(Robolectric.java:1034)
at org.robolectric.util.ComponentController.<init>(ComponentController.java:36)
at org.robolectric.util.ActivityController.<init>(ActivityController.java:45)
at org.robolectric.util.ActivityController.<init>(ActivityController.java:41)
at org.robolectric.Robolectric.buildActivity(Robolectric.java:1376)
at com.example.trial.myapplication.ApplicationTest.setUp(ApplicationTest.java:23)
at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:191)
at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:176)
at android.test.InstrumentationTestRunner.onStart(InstrumentationTestRunner.java:554)
at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1741)

我遇到了几个问题,这些问题表明这个错误与Robolectric.shadowOf()的使用有关,但是我在代码中没有使用它。如果有人能指出正确的方向,我会非常感激的。

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-08-15 08:06:58

不确定这是否是核心问题,但您正在将Robolectric与Android的测试框架混合在一起。Robolectric在JVM上运行测试(它不需要也不使用仿真器/设备),并且使用JUnit 4,而不是3。

因此,您不需要扩展ApplicationTestCase,也不需要扩展构造函数,注释应该是@Test (来自JUnit4),而不是@SmallTest (来自Android )。如果不再有从android.test进口的产品,你就会知道这是正确的。

如果在IDE中出现这些选项,请确保这些测试是作为JUnit测试运行的,而不是Android测试。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25309317

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档