Articles of robolectric

shadowOf()在Robolectric-3.0-rc3.jar中未定义

我正在使用Eclipse IDE与Robolectricunit testing用例框架(robolectric-3.0-rc3.jar)在android应用程序测试项目中编写unit testing用例。 MainActivity activity = Robolectric.setupActivity(MainActivity.class); activity.findViewById(R.id.myvideoview).performClick(); Intent expectedIntent = new Intent(activity, CategoryActivity.class); assertThat(shadowOf(activity).getNextStartedActivity()).isEqualTo(expectedIntent);

“RobolectricTestRunner.class”在Android Studio中无法识别

我正在尝试使用Robolectric来运行unit testing,但Android Studio无法识别该类: @RunWith(RobolectricTestRunner.class) 细节: classpath ‘com.android.tools.build:gradle:3.0.0’ 我正在导入依赖: testImplementation “org.robolectric:robolectric:3.5.1” 和: android { testOptions { unitTests { includeAndroidResources = true } } } 它似乎没有出现导入类的选项。 我应该添加任何我忘记的依赖项吗? 错误: error: package org.robolectric does not exist error: package org.robolectric does not exist error: package org.robolectric.shadows does not exist error: cannot find symbol class RobolectricTestRunner error: cannot find symbol variable […]

如何使用数据库编写Robolectric(2.3)测试

由于Robolectic最后一次发布到版本2.3,它写的是( https://github.com/robolectric/robolectric/releases ): Robolectric现在使用SQLite的实际实现,而不是阴影和假货的集合。 现在可以编写测试来validation真实的数据库行为。 我还没有find任何“如何”文档。 我想知道如何使用SQLiteDatabase查询在Activity上实现测试。 我应该把.db文件放在哪里,以便测试使用它。

如何使用Mockito和Robolectric嘲笑Context?

这是我的活动片段: public class Search extends Activity { private String TAG = “SEARCH”; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.search); Log.d(TAG, “About to call initialastion”); // new InitialisationTask(this).execute(); } } 通过上面注释的行,我可以愉快地创建和执行unit testing,如下所示: @RunWith(RobolectricTestRunner.class) public class SearchTest { private Search searchActivity; private Button searchButton; private Button clearButton; private Button loginButton; private Button registerButton; private EditText searchEditText; […]

尝试使用Robolectric测试XML解析时出错

我正在使用Robolectric并尝试测试解析XML响应。 我收到以下exception: java.lang.NoClassDefFoundError: java/lang/AutoCloseable at android.util.Xml.parse(Xml.java:80) at com.test.app.network.parser.soap.BaseSoapParser.doParse(BaseSoapParser.java:57) at com.test.app.network.parser.soap.RecipeParser.parse(RecipeParser.java:57) at com.test.app.network.command.RecipeCommand.searchRecipes(RecipeCommand.java:64) at com.test.app.data.PrepopulateDB.prepopulateDB(PrepopulateDB.java:53) at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:45) at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15) at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:42) at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20) at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28) at org.robolectric.RobolectricTestRunner$2.evaluate(RobolectricTestRunner.java:230) at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:263) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:68) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:47) at org.junit.runners.ParentRunner$3.run(ParentRunner.java:231) at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:60) at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:229) at org.junit.runners.ParentRunner.access$000(ParentRunner.java:50) at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:222) at org.robolectric.RobolectricTestRunner$1.evaluate(RobolectricTestRunner.java:172) at org.junit.runners.ParentRunner.run(ParentRunner.java:300) at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50) at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683) at […]

Android / Robolectric框架工作 – 实例化活动在getResource上返回null

这与使用Robolectric框架在android上进行unit testing有关。 我在代码上得到一个空指针exception,正常运行时没有问题。 我刚刚开始使用机电,所以它可能非常简单。 以下是测试的调用代码: @Test public void testInitUtilsInitSequenceNumberIsRandom() { // create an activity for reference InitUtils initUtils = new InitUtils(); // do static initialization to parse questions into memory InitUtils.initialize(initUtils); // <============ the call from roboelectric framework // retreive app state AppState appState = (AppState) initUtils.getApplicationContext(); // fill in later fail("not implemented"); } 这是在InitUtils中调用的方法,它崩溃了 […]

Robolectric使用Fragments和ActionBarCompat NullPointerException

我有一个Android应用程序,它使用片段并实现了ActionBarCompat。 我写了如下所示的简单Robolectric测试: @Test public void shouldNotBeNull() throws Exception { MainFragment mainFragment = new MainFragment(); startFragment(mainFragment); assertThat(mainFragment, notNullValue()); assertThat(mainFragment.getActivity(), notNullValue()); } private void startFragment(MainFragment fragment) { FragmentActivity activity = new FragmentActivity(); shadowOf(activity).callOnCreate(null); shadowOf(activity).callOnStart(); shadowOf(activity).callOnResume(); FragmentManager fragmentManager = activity.getSupportFragmentManager(); FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); fragmentTransaction.add(fragment, null); fragmentTransaction.commit(); } 我得到以下exception: java.lang.NullPointerException: null at android.app.Activity.invalidateOptionsMenu(Activity.java:2595) at android.support.v4.app.ActivityCompatHoneycomb.invalidateOptionsMenu(ActivityCompatHoneycomb.java:30) at android.support.v4.app.FragmentActivity.supportInvalidateOptionsMenu(FragmentActivity.java:572) at […]

使用Robolectric改变Android连接

我正在研究一个使用Robolectric进行unit testing的Android项目。 我没有禁用互联网连接工作。 我有一个方法,它使用HttpUrlConnection向HTTP服务器发送请求并从HTTP服务器获取响应: boolean sendRequest() 。 如果请求成功,则返回true。 private boolean sendRequest() throws Exception { URL url = new URL(“http://example.com”); HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection( ); int statusCode = urlConnection.getResponseCode( ); return statusCode == 200; } 在一个帮助器类中,我有两个方法: void setConnectivity(boolean enable)和boolean checkConnectivity() 。 public static void setConnectivity( boolean enabled) throws Exception { Context context = Robolectric.application.getApplicationContext(); WifiManager […]

使用Robolectric测试自定义视图:宽度和高度始终为0

我为绘图应用程序构建了一个自定义视图(DrawView)。 它在很大程度上取决于内部位图的实际宽度和高度。 当我尝试使用Robolectric 2.2进行测试时,视图的长度和宽度为0会导致内部逻辑崩溃。 如何模拟真实的屏幕尺寸? 我使用一个简单的LinearLayout和DrawView作为其中唯一要测试的元素。 这是我的布局: 这是我的unit testing: @RunWith(RobolectricTestRunner.class) public class DrawViewTest { Activity activity; DrawView drawView; LinearLayout layout; @Before public void setUp() throws Exception { ActivityController activityController = Robolectric.buildActivity(Activity.class).create().start().resume() .visible(); Activity activity = activityController.get(); layout = (LinearLayout) LayoutInflater.from(activity).inflate(R.layout.test, null); drawView = (DrawView) layout.findViewById(R.id.drawView); } @Test public void testFloodFill() throws Exception { System.out.println(drawView.getWidth()); drawView.floodFill(new […]

如何在Roboelectric中模拟ViewPager上的拖动事件?

我是Android和Robolectric的新手。 我试图在viewpager上模拟(如主题所示)一个拖动事件。 我曾经实现过这个代码,它在模拟器上运行。 问题主要是:我如何对其进行unit testing? 这是unit testing: /** imports are skipped **/ @RunWith(RobolectricTestRunner.class) @Config(manifest = “/src/main/AndroidManifest.xml”) public class TestImages { private ImageActivity activity; @InjectResource(R.drawable.ic_launcher) private static Drawable image; @Spy private final PicturesModel picturesModel = spy(new PicturesModelImpl()); /** * Last touched view */ private View lastTouchView; /** * Last touched X coordinate */ private float lastTouchX; […]