From cbf1864565dfb3023256c3833d20ab93e07d0536 Mon Sep 17 00:00:00 2001 From: WonderCsabo Date: Thu, 1 May 2014 19:55:37 +0200 Subject: [PATCH 1/4] Update to Robolectric 2.2 Initial implementation for upgrading to Robolectric 2.2. SaveInstanceStateActivityParameterizedTest is failing, which is due to a Robolectric bug described in #973. This commit dependes on RoboGuice 2 which is implemented in #983. All other tests should be OK. This involves lots of code change and simplification thanks to Robolectric 2.2. --- .../functional-test-1-5-tests/pom.xml | 4 +- .../shadows/CustomShadowBundle.java | 628 ------------------ .../robolectric/shadows/ShadowButton.java | 44 -- .../robolectric/shadows/ShadowHtml.java | 97 --- .../shadows/ShadowListFragment.java | 47 -- .../test15/AbstractActivityTest.java | 3 +- .../test15/AndroidAnnotationsTestRunner.java | 29 - .../ApplicationInjectedActivityTest.java | 18 +- .../test15/AwaitingResultActivityTest.java | 3 +- .../test15/ClicksHandledActivityTest.java | 12 +- .../test15/EmptyActivityWithLayoutTest.java | 7 +- .../EmptyActivityWithoutLayoutTest.java | 10 +- .../test15/FromHtmlActivityTest.java | 12 +- .../test15/InjectExtraTest.java | 55 +- .../test15/ItemClicksHandledActivityTest.java | 36 +- .../test15/LongClicksHandledActivityTest.java | 12 +- .../test15/RobolectricParameterized.java | 256 ------- .../test15/SSLConnectionTest.java | 7 +- .../test15/ServiceInjectionTest.java | 27 +- .../test15/ThreadActivityTest.java | 11 +- .../test15/TouchesHandledActivityTest.java | 7 +- .../test15/TracedActivityTest.java | 7 +- .../test15/TransactionalActivityTest.java | 7 +- .../test15/ViewsInjectedActivityTest.java | 8 +- .../afterinject/AfterInjectActivityTest.java | 14 +- .../afterinject/AfterInjectBeanTest.java | 9 +- .../afterviews/AfterViewsActivityTest.java | 12 +- .../application/GeneratedApplicationTest.java | 9 +- .../ebean/BeanInjectedActivityTest.java | 12 +- .../test15/ebean/CyclicSingletonTest.java | 7 +- .../test15/ebean/SomeBeanTest.java | 7 +- .../test15/ebean/SomeSingletonTest.java | 17 +- .../efragment/MyFragmentActivityTest.java | 21 +- .../test15/efragment/MyListFragmentTest.java | 13 +- .../MySupportFragmentActivityTest.java | 8 +- .../eintentservice/MyIntentServiceTest.java | 4 +- .../test15/eview/CustomButtonTest.java | 12 +- .../eviewgroup/CustomFrameLayoutTest.java | 12 +- .../greendroid/MyGreenDroidActivityTest.java | 21 +- .../test15/inheritance/InheritanceTest.java | 4 +- ...nstanceStateActivityParameterizedTest.java | 30 +- .../SaveInstanceStateActivityTest.java | 21 +- .../test15/menu/OptionsMenuActivityTest.java | 15 +- .../test15/ormlite/OrmLiteActivityTest.java | 12 +- .../test15/prefs/PrefsActivityTest.java | 11 +- .../test15/res/ResActivityTest.java | 14 +- .../test15/rest/HttpMethodServiceTest.java | 4 +- .../test15/rest/MyServiceTest.java | 26 +- .../test15/rest/RequestTestBuilder.java | 3 +- .../roboguice/InjectedActivityTest.java | 21 +- .../test15/roboguice/InjectedTestRunner.java | 52 -- .../RobolectricSampleTestModule.java | 4 +- .../roboguice/TestSampleRoboApplication_.java | 37 ++ .../sherlock/MySherlockActivityTest.java | 15 +- .../org.robolectric.Config.properties | 17 + .../functional-test-1-5/pom.xml | 4 +- .../test15/CustomTitleActivity.java | 52 +- .../test15/ItemClicksHandledActivity.java | 8 +- .../test15/rest/EBeanConverter.java | 2 +- .../test15/rest/EBeanInterceptor.java | 2 +- .../test15/rest/MyRequestFactory.java | 2 +- .../roboguice/ActivityWithRoboGuice.java | 6 +- .../roboguice/MapActivityWithRoboGuice.java | 6 +- .../roboguice/RobolectricSampleModule.java | 5 +- .../roboguice/SampleRoboApplication.java | 19 +- 65 files changed, 383 insertions(+), 1534 deletions(-) delete mode 100644 AndroidAnnotations/functional-test-1-5-tests/src/test/java/com/xtremelabs/robolectric/shadows/CustomShadowBundle.java delete mode 100644 AndroidAnnotations/functional-test-1-5-tests/src/test/java/com/xtremelabs/robolectric/shadows/ShadowButton.java delete mode 100644 AndroidAnnotations/functional-test-1-5-tests/src/test/java/com/xtremelabs/robolectric/shadows/ShadowHtml.java delete mode 100644 AndroidAnnotations/functional-test-1-5-tests/src/test/java/com/xtremelabs/robolectric/shadows/ShadowListFragment.java delete mode 100644 AndroidAnnotations/functional-test-1-5-tests/src/test/java/org/androidannotations/test15/AndroidAnnotationsTestRunner.java delete mode 100644 AndroidAnnotations/functional-test-1-5-tests/src/test/java/org/androidannotations/test15/RobolectricParameterized.java delete mode 100644 AndroidAnnotations/functional-test-1-5-tests/src/test/java/org/androidannotations/test15/roboguice/InjectedTestRunner.java create mode 100644 AndroidAnnotations/functional-test-1-5-tests/src/test/java/org/androidannotations/test15/roboguice/TestSampleRoboApplication_.java create mode 100644 AndroidAnnotations/functional-test-1-5-tests/src/test/resources/org.robolectric.Config.properties diff --git a/AndroidAnnotations/functional-test-1-5-tests/pom.xml b/AndroidAnnotations/functional-test-1-5-tests/pom.xml index 273601d616..eea69dcfa1 100644 --- a/AndroidAnnotations/functional-test-1-5-tests/pom.xml +++ b/AndroidAnnotations/functional-test-1-5-tests/pom.xml @@ -24,9 +24,9 @@ test - com.pivotallabs + org.robolectric robolectric - 1.1 + 2.2 test diff --git a/AndroidAnnotations/functional-test-1-5-tests/src/test/java/com/xtremelabs/robolectric/shadows/CustomShadowBundle.java b/AndroidAnnotations/functional-test-1-5-tests/src/test/java/com/xtremelabs/robolectric/shadows/CustomShadowBundle.java deleted file mode 100644 index dc02ce80f5..0000000000 --- a/AndroidAnnotations/functional-test-1-5-tests/src/test/java/com/xtremelabs/robolectric/shadows/CustomShadowBundle.java +++ /dev/null @@ -1,628 +0,0 @@ -/** - * Copyright (C) 2010-2014 eBusiness Information, Excilys Group - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not - * use this file except in compliance with the License. You may obtain a copy of - * the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed To in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations under - * the License. - */ -package com.xtremelabs.robolectric.shadows; - -import static com.xtremelabs.robolectric.Robolectric.shadowOf_; - -import java.io.Serializable; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.Map; -import java.util.Set; - -import android.os.Bundle; -import android.os.Parcelable; -import android.util.SparseArray; - -import com.xtremelabs.robolectric.internal.Implementation; -import com.xtremelabs.robolectric.internal.Implements; - -@SuppressWarnings("unchecked") -@Implements(Bundle.class) -public class CustomShadowBundle { - - Map mMap; - - public CustomShadowBundle() { - mMap = new HashMap(); - } - - @Implementation - public boolean isEmpty() { - return mMap.isEmpty(); - } - - @Implementation - public void clear() { - mMap.clear(); - } - - @Implementation - public boolean containsKey(String key) { - return mMap.containsKey(key); - } - - @Implementation - public Object get(String key) { - return mMap.get(key); - } - - @Implementation - public void remove(String key) { - mMap.remove(key); - } - - @Implementation - public Set keySet() { - return mMap.keySet(); - } - - @Implementation - public void putBoolean(String key, boolean value) { - mMap.put(key, value); - } - - @Implementation - public void putByte(String key, byte value) { - mMap.put(key, value); - } - - @Implementation - public void putChar(String key, char value) { - mMap.put(key, value); - } - - @Implementation - public void putShort(String key, short value) { - mMap.put(key, value); - } - - @Implementation - public void putInt(String key, int value) { - mMap.put(key, value); - } - - @Implementation - public void putLong(String key, long value) { - mMap.put(key, value); - } - - @Implementation - public void putFloat(String key, float value) { - mMap.put(key, value); - } - - @Implementation - public void putDouble(String key, double value) { - mMap.put(key, value); - } - - @Implementation - public void putString(String key, String value) { - mMap.put(key, value); - } - - @Implementation - public void putCharSequence(String key, CharSequence value) { - mMap.put(key, value); - } - - @Implementation - public void putParcelable(String key, Parcelable value) { - mMap.put(key, value); - } - - @Implementation - public void putParcelableArray(String key, Parcelable[] value) { - mMap.put(key, value); - } - - @Implementation - public void putParcelableArrayList(String key, - ArrayList value) { - mMap.put(key, value); - } - - @Implementation - public void putSparseParcelableArray(String key, - SparseArray value) { - mMap.put(key, value); - } - - @Implementation - public void putIntegerArrayList(String key, ArrayList value) { - mMap.put(key, value); - } - - @Implementation - public void putStringArrayList(String key, ArrayList value) { - mMap.put(key, value); - } - - @Implementation - public void putSerializable(String key, Serializable value) { - mMap.put(key, value); - } - - @Implementation - public void putBooleanArray(String key, boolean[] value) { - mMap.put(key, value); - } - - @Implementation - public void putByteArray(String key, byte[] value) { - mMap.put(key, value); - } - - @Implementation - public void putShortArray(String key, short[] value) { - mMap.put(key, value); - } - - @Implementation - public void putCharArray(String key, char[] value) { - mMap.put(key, value); - } - - @Implementation - public void putIntArray(String key, int[] value) { - mMap.put(key, value); - } - - @Implementation - public void putLongArray(String key, long[] value) { - mMap.put(key, value); - } - - @Implementation - public void putFloatArray(String key, float[] value) { - mMap.put(key, value); - } - - @Implementation - public void putDoubleArray(String key, double[] value) { - mMap.put(key, value); - } - - @Implementation - public void putStringArray(String key, String[] value) { - mMap.put(key, value); - } - - @Implementation - public void putBundle(String key, Bundle value) { - mMap.put(key, value); - } - - @Implementation - public boolean getBoolean(String key) { - return getBoolean(key, false); - } - - @Implementation - public boolean getBoolean(String key, boolean defaultValue) { - Object o = mMap.get(key); - if (o == null) { - return defaultValue; - } - try { - return (Boolean) o; - } catch (ClassCastException e) { - return defaultValue; - } - } - - @Implementation - public byte getByte(String key) { - return getByte(key, (byte) 0); - } - - @Implementation - public Byte getByte(String key, byte defaultValue) { - Object o = mMap.get(key); - if (o == null) { - return defaultValue; - } - try { - return (Byte) o; - } catch (ClassCastException e) { - return defaultValue; - } - } - - @Implementation - public char getChar(String key) { - return getChar(key, (char) 0); - } - - @Implementation - public char getChar(String key, char defaultValue) { - Object o = mMap.get(key); - if (o == null) { - return defaultValue; - } - try { - return (Character) o; - } catch (ClassCastException e) { - return defaultValue; - } - } - - @Implementation - public short getShort(String key) { - return getShort(key, (short) 0); - } - - @Implementation - public short getShort(String key, short defaultValue) { - Object o = mMap.get(key); - if (o == null) { - return defaultValue; - } - try { - return (Short) o; - } catch (ClassCastException e) { - return defaultValue; - } - } - - @Implementation - public int getInt(String key) { - return getInt(key, 0); - } - - @Implementation - public int getInt(String key, int defaultValue) { - Object o = mMap.get(key); - if (o == null) { - return defaultValue; - } - try { - return (Integer) o; - } catch (ClassCastException e) { - return defaultValue; - } - } - - @Implementation - public long getLong(String key) { - return getLong(key, 0L); - } - - @Implementation - public long getLong(String key, long defaultValue) { - Object o = mMap.get(key); - if (o == null) { - return defaultValue; - } - try { - return (Long) o; - } catch (ClassCastException e) { - return defaultValue; - } - } - - @Implementation - public float getFloat(String key) { - return getFloat(key, 0.0f); - } - - @Implementation - public float getFloat(String key, float defaultValue) { - Object o = mMap.get(key); - if (o == null) { - return defaultValue; - } - try { - return (Float) o; - } catch (ClassCastException e) { - return defaultValue; - } - } - - @Implementation - public double getDouble(String key) { - return getDouble(key, 0.0); - } - - @Implementation - public double getDouble(String key, double defaultValue) { - Object o = mMap.get(key); - if (o == null) { - return defaultValue; - } - try { - return (Double) o; - } catch (ClassCastException e) { - return defaultValue; - } - } - - @Implementation - public String getString(String key) { - Object o = mMap.get(key); - if (o == null) { - return null; - } - try { - return (String) o; - } catch (ClassCastException e) { - return null; - } - } - - @Implementation - public CharSequence getCharSequence(String key) { - Object o = mMap.get(key); - if (o == null) { - return null; - } - try { - return (CharSequence) o; - } catch (ClassCastException e) { - return null; - } - } - - @Implementation - public Bundle getBundle(String key) { - Object o = mMap.get(key); - if (o == null) { - return null; - } - try { - return (Bundle) o; - } catch (ClassCastException e) { - return null; - } - } - - @Implementation - public T getParcelable(String key) { - Object o = mMap.get(key); - if (o == null) { - return null; - } - try { - return (T) o; - } catch (ClassCastException e) { - return null; - } - } - - @Implementation - public Parcelable[] getParcelableArray(String key) { - Object o = mMap.get(key); - if (o == null) { - return null; - } - try { - return (Parcelable[]) o; - } catch (ClassCastException e) { - return null; - } - } - - @Implementation - public ArrayList getParcelableArrayList(String key) { - Object o = mMap.get(key); - if (o == null) { - return null; - } - try { - return (ArrayList) o; - } catch (ClassCastException e) { - return null; - } - } - - @Implementation - public SparseArray getSparseParcelableArray( - String key) { - Object o = mMap.get(key); - if (o == null) { - return null; - } - try { - return (SparseArray) o; - } catch (ClassCastException e) { - return null; - } - } - - @Implementation - public Serializable getSerializable(String key) { - Object o = mMap.get(key); - if (o == null) { - return null; - } - try { - return (Serializable) o; - } catch (ClassCastException e) { - return null; - } - } - - @Implementation - public ArrayList getIntegerArrayList(String key) { - Object o = mMap.get(key); - if (o == null) { - return null; - } - try { - return (ArrayList) o; - } catch (ClassCastException e) { - return null; - } - } - - @Implementation - public ArrayList getStringArrayList(String key) { - Object o = mMap.get(key); - if (o == null) { - return null; - } - try { - return (ArrayList) o; - } catch (ClassCastException e) { - return null; - } - } - - @Implementation - public boolean[] getBooleanArray(String key) { - Object o = mMap.get(key); - if (o == null) { - return null; - } - try { - return (boolean[]) o; - } catch (ClassCastException e) { - return null; - } - } - - @Implementation - public byte[] getByteArray(String key) { - Object o = mMap.get(key); - if (o == null) { - return null; - } - try { - return (byte[]) o; - } catch (ClassCastException e) { - return null; - } - } - - @Implementation - public short[] getShortArray(String key) { - Object o = mMap.get(key); - if (o == null) { - return null; - } - try { - return (short[]) o; - } catch (ClassCastException e) { - return null; - } - } - - @Implementation - public char[] getCharArray(String key) { - Object o = mMap.get(key); - if (o == null) { - return null; - } - try { - return (char[]) o; - } catch (ClassCastException e) { - return null; - } - } - - @Implementation - public int[] getIntArray(String key) { - Object o = mMap.get(key); - if (o == null) { - return null; - } - try { - return (int[]) o; - } catch (ClassCastException e) { - return null; - } - } - - @Implementation - public long[] getLongArray(String key) { - Object o = mMap.get(key); - if (o == null) { - return null; - } - try { - return (long[]) o; - } catch (ClassCastException e) { - return null; - } - } - - @Implementation - public float[] getFloatArray(String key) { - Object o = mMap.get(key); - if (o == null) { - return null; - } - try { - return (float[]) o; - } catch (ClassCastException e) { - return null; - } - } - - @Implementation - public double[] getDoubleArray(String key) { - Object o = mMap.get(key); - if (o == null) { - return null; - } - try { - return (double[]) o; - } catch (ClassCastException e) { - return null; - } - } - - @Implementation - public String[] getStringArray(String key) { - Object o = mMap.get(key); - if (o == null) { - return null; - } - try { - return (String[]) o; - } catch (ClassCastException e) { - return null; - } - } - - @Override - public int hashCode() { - final int prime = 31; - int result = 1; - result = prime * result + ((mMap == null) ? 0 : mMap.hashCode()); - return result; - } - - @Override - public boolean equals(Object obj) { - if (this == obj) - return true; - if (obj == null) - return false; - obj = shadowOf_(obj); - if (getClass() != obj.getClass()) - return false; - CustomShadowBundle other = (CustomShadowBundle) obj; - if (mMap == null) { - if (other.mMap != null) - return false; - } else if (!mMap.equals(other.mMap)) - return false; - return true; - } - -} diff --git a/AndroidAnnotations/functional-test-1-5-tests/src/test/java/com/xtremelabs/robolectric/shadows/ShadowButton.java b/AndroidAnnotations/functional-test-1-5-tests/src/test/java/com/xtremelabs/robolectric/shadows/ShadowButton.java deleted file mode 100644 index 252cf35fc8..0000000000 --- a/AndroidAnnotations/functional-test-1-5-tests/src/test/java/com/xtremelabs/robolectric/shadows/ShadowButton.java +++ /dev/null @@ -1,44 +0,0 @@ -/** - * Copyright (C) 2010-2014 eBusiness Information, Excilys Group - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not - * use this file except in compliance with the License. You may obtain a copy of - * the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed To in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations under - * the License. - */ -package com.xtremelabs.robolectric.shadows; - -import android.view.View; -import android.widget.Button; - -import com.xtremelabs.robolectric.internal.Implementation; -import com.xtremelabs.robolectric.internal.Implements; - -@Implements(Button.class) -public class ShadowButton extends ShadowTextView { - - private View.OnLongClickListener onLongClickListener; - - @Implementation - public boolean performLongClick() { - if (onLongClickListener != null) { - onLongClickListener.onLongClick(realView); - return true; - } - return false; - } - - @Implementation - public void setOnLongClickListener( - View.OnLongClickListener onLongClickListener) { - this.onLongClickListener = onLongClickListener; - } - -} diff --git a/AndroidAnnotations/functional-test-1-5-tests/src/test/java/com/xtremelabs/robolectric/shadows/ShadowHtml.java b/AndroidAnnotations/functional-test-1-5-tests/src/test/java/com/xtremelabs/robolectric/shadows/ShadowHtml.java deleted file mode 100644 index b7958cb599..0000000000 --- a/AndroidAnnotations/functional-test-1-5-tests/src/test/java/com/xtremelabs/robolectric/shadows/ShadowHtml.java +++ /dev/null @@ -1,97 +0,0 @@ -/** - * Copyright (C) 2010-2014 eBusiness Information, Excilys Group - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not - * use this file except in compliance with the License. You may obtain a copy of - * the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed To in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations under - * the License. - */ -package com.xtremelabs.robolectric.shadows; - -import android.text.Html; -import android.text.Spanned; - -import com.xtremelabs.robolectric.internal.Implementation; -import com.xtremelabs.robolectric.internal.Implements; - -@Implements(Html.class) -public class ShadowHtml { - @Implementation - public static Spanned fromHtml(String source) { - return new SpannedThatActsLikeString(source); - } - - private static class SpannedThatActsLikeString implements Spanned { - String source; - - private SpannedThatActsLikeString(String source) { - this.source = source; - } - - @Override - public T[] getSpans(int start, int end, Class type) { - return null; - } - - @Override - public int getSpanStart(Object tag) { - return 0; - } - - @Override - public int getSpanEnd(Object tag) { - return 0; - } - - @Override - public int getSpanFlags(Object tag) { - return 0; - } - - @SuppressWarnings("rawtypes") - @Override - public int nextSpanTransition(int start, int limit, Class type) { - return 0; - } - - @Override - public int length() { - return 0; - } - - @Override - public char charAt(int i) { - return 0; - } - - @Override - public CharSequence subSequence(int i, int i1) { - return null; - } - - @Override - public String toString() { - return source; - } - - @Override - public boolean equals(Object o) { - if (o instanceof SpannedThatActsLikeString) - return source.equals(((SpannedThatActsLikeString) o).source); - else - return source.equals(o); - } - - @Override - public int hashCode() { - return source != null ? source.hashCode() : 0; - } - } -} diff --git a/AndroidAnnotations/functional-test-1-5-tests/src/test/java/com/xtremelabs/robolectric/shadows/ShadowListFragment.java b/AndroidAnnotations/functional-test-1-5-tests/src/test/java/com/xtremelabs/robolectric/shadows/ShadowListFragment.java deleted file mode 100644 index aff19721c9..0000000000 --- a/AndroidAnnotations/functional-test-1-5-tests/src/test/java/com/xtremelabs/robolectric/shadows/ShadowListFragment.java +++ /dev/null @@ -1,47 +0,0 @@ -/** - * Copyright (C) 2010-2014 eBusiness Information, Excilys Group - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not - * use this file except in compliance with the License. You may obtain a copy of - * the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed To in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations under - * the License. - */ -package com.xtremelabs.robolectric.shadows; - -import android.os.Bundle; -import android.support.v4.app.ListFragment; -import android.view.View; -import android.widget.AdapterView; -import android.widget.ListView; - -import com.xtremelabs.robolectric.internal.Implementation; -import com.xtremelabs.robolectric.internal.Implements; - -@Implements(ListFragment.class) -public class ShadowListFragment extends ShadowFragment { - - final private AdapterView.OnItemClickListener mOnClickListener = // - new AdapterView.OnItemClickListener() { - public void onItemClick(AdapterView parent, View v, int position, - long id) { - onListItemClick((ListView) parent, v, position, id); - } - }; - - @Implementation - public void onViewCreated(View view, Bundle savedInstanceState) { - ListView list = (ListView) view.findViewById(android.R.id.list); - list.setOnItemClickListener(mOnClickListener); - } - - @Implementation - public void onListItemClick(ListView l, View v, int position, long id) { - } -} diff --git a/AndroidAnnotations/functional-test-1-5-tests/src/test/java/org/androidannotations/test15/AbstractActivityTest.java b/AndroidAnnotations/functional-test-1-5-tests/src/test/java/org/androidannotations/test15/AbstractActivityTest.java index 7beedd1a58..b2b58dbfd5 100644 --- a/AndroidAnnotations/functional-test-1-5-tests/src/test/java/org/androidannotations/test15/AbstractActivityTest.java +++ b/AndroidAnnotations/functional-test-1-5-tests/src/test/java/org/androidannotations/test15/AbstractActivityTest.java @@ -21,8 +21,9 @@ import org.junit.Test; import org.junit.runner.RunWith; +import org.robolectric.RobolectricTestRunner; -@RunWith(AndroidAnnotationsTestRunner.class) +@RunWith(RobolectricTestRunner.class) public class AbstractActivityTest { @Test diff --git a/AndroidAnnotations/functional-test-1-5-tests/src/test/java/org/androidannotations/test15/AndroidAnnotationsTestRunner.java b/AndroidAnnotations/functional-test-1-5-tests/src/test/java/org/androidannotations/test15/AndroidAnnotationsTestRunner.java deleted file mode 100644 index f837e20222..0000000000 --- a/AndroidAnnotations/functional-test-1-5-tests/src/test/java/org/androidannotations/test15/AndroidAnnotationsTestRunner.java +++ /dev/null @@ -1,29 +0,0 @@ -/** - * Copyright (C) 2010-2014 eBusiness Information, Excilys Group - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not - * use this file except in compliance with the License. You may obtain a copy of - * the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed To in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations under - * the License. - */ -package org.androidannotations.test15; - -import java.io.File; - -import org.junit.runners.model.InitializationError; - -import com.xtremelabs.robolectric.RobolectricTestRunner; - -public class AndroidAnnotationsTestRunner extends RobolectricTestRunner { - public AndroidAnnotationsTestRunner(Class testClass) - throws InitializationError { - super(testClass, new File("../functional-test-1-5")); - } -} diff --git a/AndroidAnnotations/functional-test-1-5-tests/src/test/java/org/androidannotations/test15/ApplicationInjectedActivityTest.java b/AndroidAnnotations/functional-test-1-5-tests/src/test/java/org/androidannotations/test15/ApplicationInjectedActivityTest.java index 5193a53e57..f57a13e5ea 100644 --- a/AndroidAnnotations/functional-test-1-5-tests/src/test/java/org/androidannotations/test15/ApplicationInjectedActivityTest.java +++ b/AndroidAnnotations/functional-test-1-5-tests/src/test/java/org/androidannotations/test15/ApplicationInjectedActivityTest.java @@ -21,16 +21,18 @@ import org.androidannotations.test15.roboguice.SampleRoboApplication_; import org.junit.Test; import org.junit.runner.RunWith; +import org.robolectric.Robolectric; +import org.robolectric.RobolectricTestRunner; -@RunWith(AndroidAnnotationsTestRunner.class) +@RunWith(RobolectricTestRunner.class) public class ApplicationInjectedActivityTest { - + @Test public void should_have_application_after_create() { - new SampleRoboApplication_().onCreate(); - ApplicationInjectedActivity_ activity = new ApplicationInjectedActivity_(); - - activity.onCreate(null); + SampleRoboApplication_ application = new SampleRoboApplication_(); + application.onCreate(); + + ApplicationInjectedActivity_ activity = Robolectric.buildActivity(ApplicationInjectedActivity_.class).create().get(); assertThat(activity.customApplication).isNotNull(); } @@ -41,9 +43,7 @@ public void application_can_be_replaced_for_tests() { SampleRoboApplication_.setForTesting(testApp); - ApplicationInjectedActivity_ activity = new ApplicationInjectedActivity_(); - - activity.onCreate(null); + ApplicationInjectedActivity_ activity = Robolectric.buildActivity(ApplicationInjectedActivity_.class).create().get();; assertThat(activity.customApplication).isSameAs(testApp); } diff --git a/AndroidAnnotations/functional-test-1-5-tests/src/test/java/org/androidannotations/test15/AwaitingResultActivityTest.java b/AndroidAnnotations/functional-test-1-5-tests/src/test/java/org/androidannotations/test15/AwaitingResultActivityTest.java index e4fb6eb443..eec1b93dac 100644 --- a/AndroidAnnotations/functional-test-1-5-tests/src/test/java/org/androidannotations/test15/AwaitingResultActivityTest.java +++ b/AndroidAnnotations/functional-test-1-5-tests/src/test/java/org/androidannotations/test15/AwaitingResultActivityTest.java @@ -19,8 +19,9 @@ import org.junit.Test; import org.junit.runner.RunWith; +import org.robolectric.RobolectricTestRunner; -@RunWith(AndroidAnnotationsTestRunner.class) +@RunWith(RobolectricTestRunner.class) public class AwaitingResultActivityTest { @Test diff --git a/AndroidAnnotations/functional-test-1-5-tests/src/test/java/org/androidannotations/test15/ClicksHandledActivityTest.java b/AndroidAnnotations/functional-test-1-5-tests/src/test/java/org/androidannotations/test15/ClicksHandledActivityTest.java index cbf21d8151..d57a0df647 100644 --- a/AndroidAnnotations/functional-test-1-5-tests/src/test/java/org/androidannotations/test15/ClicksHandledActivityTest.java +++ b/AndroidAnnotations/functional-test-1-5-tests/src/test/java/org/androidannotations/test15/ClicksHandledActivityTest.java @@ -21,21 +21,19 @@ import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; +import org.robolectric.Robolectric; +import org.robolectric.RobolectricTestRunner; -import com.xtremelabs.robolectric.Robolectric; -import com.xtremelabs.robolectric.shadows.ShadowButton; -@RunWith(AndroidAnnotationsTestRunner.class) + +@RunWith(RobolectricTestRunner.class) public class ClicksHandledActivityTest { private ClicksHandledActivity_ activity; @Before public void setup() { - Robolectric.bindShadowClass(ShadowButton.class); - - activity = new ClicksHandledActivity_(); - activity.onCreate(null); + activity = Robolectric.buildActivity(ClicksHandledActivity_.class).create().get(); } @Test diff --git a/AndroidAnnotations/functional-test-1-5-tests/src/test/java/org/androidannotations/test15/EmptyActivityWithLayoutTest.java b/AndroidAnnotations/functional-test-1-5-tests/src/test/java/org/androidannotations/test15/EmptyActivityWithLayoutTest.java index 842510c64b..49752eff18 100644 --- a/AndroidAnnotations/functional-test-1-5-tests/src/test/java/org/androidannotations/test15/EmptyActivityWithLayoutTest.java +++ b/AndroidAnnotations/functional-test-1-5-tests/src/test/java/org/androidannotations/test15/EmptyActivityWithLayoutTest.java @@ -19,15 +19,16 @@ import org.junit.Test; import org.junit.runner.RunWith; +import org.robolectric.Robolectric; +import org.robolectric.RobolectricTestRunner; -@RunWith(AndroidAnnotationsTestRunner.class) +@RunWith(RobolectricTestRunner.class) public class EmptyActivityWithLayoutTest { @Test public void shouldHaveLayoutAfterCreate() { - EmptyActivityWithLayout_ activity = new EmptyActivityWithLayout_(); + EmptyActivityWithLayout_ activity = Robolectric.buildActivity(EmptyActivityWithLayout_.class).create().get(); - activity.onCreate(null); activity.setContentView(R.layout.main); assertThat(activity.findViewById(R.id.helloTextView)).hasId( diff --git a/AndroidAnnotations/functional-test-1-5-tests/src/test/java/org/androidannotations/test15/EmptyActivityWithoutLayoutTest.java b/AndroidAnnotations/functional-test-1-5-tests/src/test/java/org/androidannotations/test15/EmptyActivityWithoutLayoutTest.java index 5767565b17..2aacdc4f72 100644 --- a/AndroidAnnotations/functional-test-1-5-tests/src/test/java/org/androidannotations/test15/EmptyActivityWithoutLayoutTest.java +++ b/AndroidAnnotations/functional-test-1-5-tests/src/test/java/org/androidannotations/test15/EmptyActivityWithoutLayoutTest.java @@ -19,17 +19,19 @@ import org.junit.Test; import org.junit.runner.RunWith; +import org.robolectric.Robolectric; +import org.robolectric.RobolectricTestRunner; import android.view.View; -@RunWith(AndroidAnnotationsTestRunner.class) +@RunWith(RobolectricTestRunner.class) public class EmptyActivityWithoutLayoutTest { @Test public void shouldHaveNoLayoutAfterCreate() { - EmptyActivityWithoutLayout_ activity = new EmptyActivityWithoutLayout_(); - - activity.onCreate(null); + EmptyActivityWithoutLayout_ activity = Robolectric + .buildActivity(EmptyActivityWithoutLayout_.class).create() + .get(); activity.setContentView(new View(activity)); assertThat(activity.findViewById(R.id.helloTextView)).isNull(); diff --git a/AndroidAnnotations/functional-test-1-5-tests/src/test/java/org/androidannotations/test15/FromHtmlActivityTest.java b/AndroidAnnotations/functional-test-1-5-tests/src/test/java/org/androidannotations/test15/FromHtmlActivityTest.java index 53a2873ffe..0dd9930f22 100644 --- a/AndroidAnnotations/functional-test-1-5-tests/src/test/java/org/androidannotations/test15/FromHtmlActivityTest.java +++ b/AndroidAnnotations/functional-test-1-5-tests/src/test/java/org/androidannotations/test15/FromHtmlActivityTest.java @@ -21,23 +21,19 @@ import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; +import org.robolectric.Robolectric; +import org.robolectric.RobolectricTestRunner; import android.text.Html; -import com.xtremelabs.robolectric.Robolectric; -import com.xtremelabs.robolectric.shadows.ShadowHtml; - -@RunWith(AndroidAnnotationsTestRunner.class) +@RunWith(RobolectricTestRunner.class) public class FromHtmlActivityTest { private FromHtmlActivity_ activity; @Before public void setup() { - Robolectric.bindShadowClass(ShadowHtml.class); - - activity = new FromHtmlActivity_(); - activity.onCreate(null); + activity = Robolectric.buildActivity(FromHtmlActivity_.class).create().get(); } @Test diff --git a/AndroidAnnotations/functional-test-1-5-tests/src/test/java/org/androidannotations/test15/InjectExtraTest.java b/AndroidAnnotations/functional-test-1-5-tests/src/test/java/org/androidannotations/test15/InjectExtraTest.java index 8abedd14ab..6ae5589c5c 100644 --- a/AndroidAnnotations/functional-test-1-5-tests/src/test/java/org/androidannotations/test15/InjectExtraTest.java +++ b/AndroidAnnotations/functional-test-1-5-tests/src/test/java/org/androidannotations/test15/InjectExtraTest.java @@ -22,35 +22,40 @@ import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; +import org.robolectric.Robolectric; +import org.robolectric.RobolectricTestRunner; +import org.robolectric.util.ActivityController; import android.app.Activity; import android.content.Context; -@RunWith(AndroidAnnotationsTestRunner.class) +@RunWith(RobolectricTestRunner.class) public class InjectExtraTest { private ExtraInjectedActivity_ activity; - private Context context = new Activity(); + private Context context = Robolectric.buildActivity(Activity.class).create().get(); + private ActivityController controller; @Before public void setup() { - activity = new ExtraInjectedActivity_(); + controller = ActivityController.of(ExtraInjectedActivity_.class); + activity = controller.get(); } @Test public void simple_string_extra_injected() { - activity.setIntent(ExtraInjectedActivity_.intent(context) - .stringExtra("Hello!").get()); - activity.onCreate(null); + controller.withIntent(ExtraInjectedActivity_.intent(context) + .stringExtra("Hello!").get()) + .create(); assertThat(activity.stringExtra).isEqualTo("Hello!"); } @Test public void array_extra_injected() { CustomData[] customData = { new CustomData("42") }; - activity.setIntent(ExtraInjectedActivity_.intent(context) - .arrayExtra(customData).get()); - activity.onCreate(null); + controller.withIntent(ExtraInjectedActivity_.intent(context) + .arrayExtra(customData).get()) + .create(); assertThat(activity.arrayExtra).isEqualTo(customData); } @@ -58,36 +63,36 @@ public void array_extra_injected() { public void list_extra_injected() { ArrayList list = new ArrayList(); list.add("Hello !"); - activity.setIntent(ExtraInjectedActivity_.intent(context) - .listExtra(list).get()); - activity.onCreate(null); + controller.withIntent(ExtraInjectedActivity_.intent(context) + .listExtra(list).get()) + .create(); assertThat(activity.listExtra).isEqualTo(list); } @Test public void int_extra_injected() { - activity.setIntent(ExtraInjectedActivity_.intent(context).intExtra(42) - .get()); - activity.onCreate(null); + controller.withIntent(ExtraInjectedActivity_.intent(context).intExtra(42) + .get()) + .create(); assertThat(activity.intExtra).isEqualTo(42); } @Test public void int_array_extra_injected() { byte[] byteArray = { 0, 2 }; - activity.setIntent(ExtraInjectedActivity_.intent(context) - .byteArrayExtra(byteArray).get()); - activity.onCreate(null); + controller.withIntent(ExtraInjectedActivity_.intent(context) + .byteArrayExtra(byteArray).get()) + .create(); assertThat(activity.byteArrayExtra).isEqualTo(byteArray); } @Test public void setIntent_reinjects_extra() { - activity.setIntent(ExtraInjectedActivity_.intent(context) - .stringExtra("Hello!").get()); - activity.onCreate(null); + controller.withIntent(ExtraInjectedActivity_.intent(context) + .stringExtra("Hello!").get()) + .create(); - activity.setIntent(ExtraInjectedActivity_.intent(context) + controller.newIntent(ExtraInjectedActivity_.intent(context) .stringExtra("Hello Again!").get()); assertThat(activity.stringExtra).isEqualTo("Hello Again!"); @@ -95,9 +100,9 @@ public void setIntent_reinjects_extra() { @Test public void extraWithoutValueInjected() { - activity.setIntent(ExtraInjectedActivity_.intent(context) - .extraWithoutValue("Hello!").get()); - activity.onCreate(null); + controller.withIntent(ExtraInjectedActivity_.intent(context) + .extraWithoutValue("Hello!").get()) + .create(); assertThat(activity.extraWithoutValue).isEqualTo("Hello!"); } diff --git a/AndroidAnnotations/functional-test-1-5-tests/src/test/java/org/androidannotations/test15/ItemClicksHandledActivityTest.java b/AndroidAnnotations/functional-test-1-5-tests/src/test/java/org/androidannotations/test15/ItemClicksHandledActivityTest.java index 1c077d56a9..49b1c0a5bd 100644 --- a/AndroidAnnotations/functional-test-1-5-tests/src/test/java/org/androidannotations/test15/ItemClicksHandledActivityTest.java +++ b/AndroidAnnotations/functional-test-1-5-tests/src/test/java/org/androidannotations/test15/ItemClicksHandledActivityTest.java @@ -15,16 +15,19 @@ */ package org.androidannotations.test15; -import android.view.View; -import android.widget.ListView; -import android.widget.Spinner; +import static org.fest.assertions.Assertions.assertThat; + import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; +import org.robolectric.Robolectric; +import org.robolectric.RobolectricTestRunner; -import static org.fest.assertions.Assertions.assertThat; +import android.view.View; +import android.widget.ListView; +import android.widget.Spinner; -@RunWith(AndroidAnnotationsTestRunner.class) +@RunWith(RobolectricTestRunner.class) public class ItemClicksHandledActivityTest { private static final int TESTED_CLICKED_INDEX = 3; @@ -35,20 +38,17 @@ public class ItemClicksHandledActivityTest { @Before public void setup() { - activity = new ItemClicksHandledActivity_(); - activity.onCreate(null); + activity = Robolectric.buildActivity(ItemClicksHandledActivity_.class).create().get(); clickedItem = activity.getResources().getStringArray( R.array.planets_array)[TESTED_CLICKED_INDEX]; } @Test - public void handlingSpinnerItemClick() { + public void handlingSpinnerItemSelect() { Spinner spinner = (Spinner) activity.findViewById(R.id.spinner); - long itemId = spinner.getAdapter().getItemId(TESTED_CLICKED_INDEX); - View view = spinner.getChildAt(0); - assertThat(activity.spinnerItemClicked).isFalse(); - spinner.performItemClick(view, TESTED_CLICKED_INDEX, itemId); + + spinner.getOnItemSelectedListener().onItemSelected(spinner, null, TESTED_CLICKED_INDEX, 0); assertThat(activity.spinnerItemClicked).isTrue(); } @@ -64,14 +64,12 @@ public void handlingListViewItemClick() { } @Test - public void handlingSpinnerItemClickWithArgument() { + public void handlingSpinnerItemSelectWithArgument() { Spinner spinner = (Spinner) activity .findViewById(R.id.spinnerWithArgument); - long itemId = spinner.getAdapter().getItemId(TESTED_CLICKED_INDEX); - View view = spinner.getChildAt(TESTED_CLICKED_INDEX); assertThat(activity.spinnerWithArgumentSelectedItem).isNull(); - spinner.performItemClick(view, TESTED_CLICKED_INDEX, itemId); + spinner.getOnItemSelectedListener().onItemSelected(spinner, null, TESTED_CLICKED_INDEX, 0); assertThat(activity.spinnerWithArgumentSelectedItem).isNotNull(); assertThat(activity.spinnerWithArgumentSelectedItem).isEqualTo( clickedItem); @@ -106,13 +104,13 @@ public void handlingListViewItemClickWithPosition() { @Test public void handlingListViewWithPositionItemSelected() { - ListView listView = (ListView) activity + final ListView listView = (ListView) activity .findViewById(R.id.listViewWithPosition); assertThat(activity.listViewWithPositionItemSelectedPosition) .isEqualTo(0); assertThat(activity.listViewWithPositionItemSelected).isFalse(); - listView.setSelection(TESTED_CLICKED_INDEX); + listView.getOnItemSelectedListener().onItemSelected(listView, null, TESTED_CLICKED_INDEX, 0); assertThat(activity.listViewWithPositionItemSelected).isTrue(); assertThat(activity.listViewWithPositionItemSelectedPosition) .isEqualTo(TESTED_CLICKED_INDEX); @@ -123,7 +121,7 @@ public void can_have_one_selected_argument() { ListView listView = (ListView) activity .findViewById(R.id.listViewWithOneParam); assertThat(activity.listViewWithOneParamItemSelected).isFalse(); - listView.setSelection(TESTED_CLICKED_INDEX); + listView.getOnItemSelectedListener().onItemSelected(listView, null, TESTED_CLICKED_INDEX, 0); assertThat(activity.listViewWithOneParamItemSelected).isTrue(); } diff --git a/AndroidAnnotations/functional-test-1-5-tests/src/test/java/org/androidannotations/test15/LongClicksHandledActivityTest.java b/AndroidAnnotations/functional-test-1-5-tests/src/test/java/org/androidannotations/test15/LongClicksHandledActivityTest.java index 08e0fb6efb..94549d38be 100644 --- a/AndroidAnnotations/functional-test-1-5-tests/src/test/java/org/androidannotations/test15/LongClicksHandledActivityTest.java +++ b/AndroidAnnotations/functional-test-1-5-tests/src/test/java/org/androidannotations/test15/LongClicksHandledActivityTest.java @@ -21,21 +21,17 @@ import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; +import org.robolectric.Robolectric; +import org.robolectric.RobolectricTestRunner; -import com.xtremelabs.robolectric.Robolectric; -import com.xtremelabs.robolectric.shadows.ShadowButton; - -@RunWith(AndroidAnnotationsTestRunner.class) +@RunWith(RobolectricTestRunner.class) public class LongClicksHandledActivityTest { private LongClicksHandledActivity_ activity; @Before public void setup() { - Robolectric.bindShadowClass(ShadowButton.class); - - activity = new LongClicksHandledActivity_(); - activity.onCreate(null); + activity = Robolectric.buildActivity(LongClicksHandledActivity_.class).create().get(); } @Test diff --git a/AndroidAnnotations/functional-test-1-5-tests/src/test/java/org/androidannotations/test15/RobolectricParameterized.java b/AndroidAnnotations/functional-test-1-5-tests/src/test/java/org/androidannotations/test15/RobolectricParameterized.java deleted file mode 100644 index 6a60ba6d08..0000000000 --- a/AndroidAnnotations/functional-test-1-5-tests/src/test/java/org/androidannotations/test15/RobolectricParameterized.java +++ /dev/null @@ -1,256 +0,0 @@ -/** - * Copyright (C) 2010-2014 eBusiness Information, Excilys Group - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not - * use this file except in compliance with the License. You may obtain a copy of - * the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed To in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations under - * the License. - */ -package org.androidannotations.test15; - -import java.lang.reflect.Method; -import java.lang.reflect.Modifier; -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; - -import org.junit.runner.Runner; -import org.junit.runner.notification.RunNotifier; -import org.junit.runners.BlockJUnit4ClassRunner; -import org.junit.runners.Parameterized; -import org.junit.runners.Parameterized.Parameters; -import org.junit.runners.Suite; -import org.junit.runners.model.FrameworkMethod; -import org.junit.runners.model.InitializationError; -import org.junit.runners.model.Statement; -import org.junit.runners.model.TestClass; - -import com.xtremelabs.robolectric.RobolectricTestRunner; -import com.xtremelabs.robolectric.bytecode.RobolectricClassLoader; - -/** - * This class is a copy of Junit {@link Parameterized}, but it creates - * {@link AndroidAnnotationsTestRunner} runners instead of - * {@link BlockJUnit4ClassRunner} - * - * We added some hacks, because Robolectric has a lot of expectations on how the - * runner and the tested class should work. - * - * - *

- * The custom runner Parameterized implements parameterized tests. - * When running a parameterized test class, instances are created for the - * cross-product of the test methods and the test data elements. - *

- * - *

- * The test must have a constructor with no parameters. The parameters are - * passed through an init() method, which can have any number of parameters. The - * parameters of the init() method must match the {@link Parameterized} test - * data. - *

- * - * For example, to test a Fibonacci function, write: - * - *

- * @RunWith(Parameterized.class)
- * public class FibonacciTest {
- * 	@Parameters
- * 	public static List<Object[]> data() {
- * 		return Arrays.asList(new Object[][] {
- * 				Fibonacci,
- * 				{ { 0, 0 }, { 1, 1 }, { 2, 1 }, { 3, 2 }, { 4, 3 }, { 5, 5 },
- * 						{ 6, 8 } } });
- * 	}
- * 
- * 	private int fInput;
- * 
- * 	private int fExpected;
- * 
- * 	public void init(int input, int expected) {
- * 		fInput = input;
- * 		fExpected = expected;
- * 	}
- * 
- * 	@Test
- * 	public void test() {
- * 		assertEquals(fExpected, Fibonacci.compute(fInput));
- * 	}
- * }
- * 
- * - *

- * Each instance of FibonacciTest will be constructed using the - * two-argument constructor and the data values in the - * @Parameters method. - *

- */ -public class RobolectricParameterized extends Suite { - - public static class TestClassRunnerForParameters extends - AndroidAnnotationsTestRunner { - private int parameterSetNumber; - - private List parameterList; - - private RobolectricParameterized motherRunner; - - public TestClassRunnerForParameters(Class type) - throws InitializationError { - super(type); - } - - private void init(RobolectricParameterized motherRunner, - List parameterList, int parameterSetNumber) { - this.motherRunner = motherRunner; - this.parameterList = parameterList; - this.parameterSetNumber = parameterSetNumber; - } - - @Override - public Object createTest() throws Exception { - Object test = super.createTest(); - - if (motherRunner == null) { - /* - * We are in the delegate runner created by Robolectric. - */ - return test; - } - - /* - * We are in the original runner, but the test instance is the one - * created by the delegate runner. - */ - - /* - * Let's init the test with parameters. We look for a method called - * init, with any params. We can't use constructor parameters, - * Robolectric won't allow that. - */ - - Method[] declaredMethods = test.getClass().getDeclaredMethods(); - - /* - * We only take first init method found in consideration - */ - Method initMethod = null; - for (Method method : declaredMethods) { - if (method.getName().equals("init")) { - initMethod = method; - break; - } - } - - if (initMethod == null) { - throw new RuntimeException( - "No init method found in parameterized test"); - } - - initMethod.setAccessible(true); - - Object[] params = computeParams(); - - initMethod.invoke(test, params); - - return test; - } - - private Object[] computeParams() throws Exception { - try { - return parameterList.get(parameterSetNumber); - } catch (ClassCastException e) { - throw new Exception(String.format( - "%s.%s() must return a Collection of arrays.", - getTestClass().getName(), motherRunner - .getParametersMethod(getTestClass()).getName())); - } - } - - @Override - protected String getName() { - return String.format("[%s]", parameterSetNumber); - } - - @Override - protected String testName(final FrameworkMethod method) { - return String - .format("%s[%s]", method.getName(), parameterSetNumber); - } - - @Override - protected void validateConstructor(List errors) { - validateOnlyOneConstructor(errors); - } - - @Override - protected Statement classBlock(RunNotifier notifier) { - return childrenInvoker(notifier); - } - } - - private final ArrayList runners = new ArrayList(); - - /** - * Only called reflectively. Do not use programmatically. - */ - public RobolectricParameterized(Class klass) throws Throwable { - /* - * Notice how we replace the class with a class loaded by robolectric. - */ - super(robolectricClass(klass), Collections. emptyList()); - List parametersList = getParametersList(getTestClass()); - for (int i = 0; i < parametersList.size(); i++) { - TestClassRunnerForParameters testRunner = new TestClassRunnerForParameters( - getTestClass().getJavaClass()); - testRunner.init(this, parametersList, i); - runners.add(testRunner); - } - } - - @Override - protected List getChildren() { - return runners; - } - - @SuppressWarnings("unchecked") - private List getParametersList(TestClass klass) throws Throwable { - return (List) getParametersMethod(klass).invokeExplosively( - null); - } - - private FrameworkMethod getParametersMethod(TestClass testClass) - throws Exception { - List methods = testClass - .getAnnotatedMethods(Parameters.class); - for (FrameworkMethod each : methods) { - int modifiers = each.getMethod().getModifiers(); - if (Modifier.isStatic(modifiers) && Modifier.isPublic(modifiers)) - return each; - } - - throw new Exception("No public static parameters method on class " - + testClass.getName()); - } - - private static Class robolectricClass(Class originalClass) - throws Exception { - return getRobolectricLoader().loadClass(originalClass.getName()); - } - - private static RobolectricClassLoader getRobolectricLoader() - throws Exception { - Method getDefaultLoader = RobolectricTestRunner.class - .getDeclaredMethod("getDefaultLoader"); - getDefaultLoader.setAccessible(true); - return (RobolectricClassLoader) getDefaultLoader.invoke(null); - } - -} diff --git a/AndroidAnnotations/functional-test-1-5-tests/src/test/java/org/androidannotations/test15/SSLConnectionTest.java b/AndroidAnnotations/functional-test-1-5-tests/src/test/java/org/androidannotations/test15/SSLConnectionTest.java index 984b7d2927..662565d24b 100644 --- a/AndroidAnnotations/functional-test-1-5-tests/src/test/java/org/androidannotations/test15/SSLConnectionTest.java +++ b/AndroidAnnotations/functional-test-1-5-tests/src/test/java/org/androidannotations/test15/SSLConnectionTest.java @@ -31,8 +31,10 @@ import org.junit.BeforeClass; import org.junit.Test; import org.junit.runner.RunWith; +import org.robolectric.Robolectric; +import org.robolectric.RobolectricTestRunner; -@RunWith(AndroidAnnotationsTestRunner.class) +@RunWith(RobolectricTestRunner.class) public class SSLConnectionTest { private SSLConnection_ activity; @@ -44,8 +46,7 @@ public static void addSecurityProvider() { @Before public void setup() { - activity = new SSLConnection_(); - activity.onCreate(null); + activity = Robolectric.buildActivity(SSLConnection_.class).create().get(); } @Test diff --git a/AndroidAnnotations/functional-test-1-5-tests/src/test/java/org/androidannotations/test15/ServiceInjectionTest.java b/AndroidAnnotations/functional-test-1-5-tests/src/test/java/org/androidannotations/test15/ServiceInjectionTest.java index 35553f1016..0f78b27bee 100644 --- a/AndroidAnnotations/functional-test-1-5-tests/src/test/java/org/androidannotations/test15/ServiceInjectionTest.java +++ b/AndroidAnnotations/functional-test-1-5-tests/src/test/java/org/androidannotations/test15/ServiceInjectionTest.java @@ -17,36 +17,17 @@ import static org.fest.assertions.Assertions.assertThat; -import java.lang.reflect.Field; -import java.util.Map; - -import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; +import org.robolectric.Robolectric; +import org.robolectric.RobolectricTestRunner; -import android.content.Context; - -import com.xtremelabs.robolectric.shadows.ShadowApplication; - -@RunWith(AndroidAnnotationsTestRunner.class) +@RunWith(RobolectricTestRunner.class) public class ServiceInjectionTest { - @Before - public void setup() throws Exception { - Field serviceMapField = ShadowApplication.class - .getDeclaredField("SYSTEM_SERVICE_MAP"); - serviceMapField.setAccessible(true); - @SuppressWarnings("unchecked") - Map SYSTEM_SERVICE_MAP = (Map) serviceMapField - .get(null); - - SYSTEM_SERVICE_MAP.put(Context.CLIPBOARD_SERVICE, "android.content.ClipboardManager"); - } - @Test public void servicesAreInjected() { - ActivityWithServices_ activity = new ActivityWithServices_(); - activity.onCreate(null); + ActivityWithServices_ activity = Robolectric.buildActivity(ActivityWithServices_.class).create().get(); assertThat(activity.windowManager).isNotNull(); assertThat(activity.layoutInflater).isNotNull(); diff --git a/AndroidAnnotations/functional-test-1-5-tests/src/test/java/org/androidannotations/test15/ThreadActivityTest.java b/AndroidAnnotations/functional-test-1-5-tests/src/test/java/org/androidannotations/test15/ThreadActivityTest.java index 8e54dfe7e1..203fed99fb 100644 --- a/AndroidAnnotations/functional-test-1-5-tests/src/test/java/org/androidannotations/test15/ThreadActivityTest.java +++ b/AndroidAnnotations/functional-test-1-5-tests/src/test/java/org/androidannotations/test15/ThreadActivityTest.java @@ -15,7 +15,6 @@ */ package org.androidannotations.test15; -//import static org.fest.assertions.Assertions.assertThat; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.verify; @@ -36,11 +35,13 @@ import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mockito; +import org.robolectric.Robolectric; +import org.robolectric.RobolectricTestRunner; import android.os.Handler; import android.os.Looper; -@RunWith(AndroidAnnotationsTestRunner.class) +@RunWith(RobolectricTestRunner.class) public class ThreadActivityTest { private static final int MAX_WAITING_TIME = 3000; /* milliseconds */ @@ -53,8 +54,7 @@ public class ThreadActivityTest { @Before public void setup() { - activity = new ThreadActivity_(); - activity.onCreate(null); + activity = Robolectric.buildActivity(ThreadActivity_.class).create().get(); defaultExceptionHandler = Thread.getDefaultUncaughtExceptionHandler(); } @@ -337,8 +337,7 @@ public void assertHandlerWithMainThread() throws NoSuchFieldException, IllegalAc @Override public void run() { synchronized (threadActivityHolder) { - threadActivityHolder[0] = new ThreadActivity_(); - threadActivityHolder[0].onCreate(null); + threadActivityHolder[0] = Robolectric.buildActivity(ThreadActivity_.class).create().get(); threadActivityHolder.notify(); } } diff --git a/AndroidAnnotations/functional-test-1-5-tests/src/test/java/org/androidannotations/test15/TouchesHandledActivityTest.java b/AndroidAnnotations/functional-test-1-5-tests/src/test/java/org/androidannotations/test15/TouchesHandledActivityTest.java index 4695ec36c0..8312b9306f 100644 --- a/AndroidAnnotations/functional-test-1-5-tests/src/test/java/org/androidannotations/test15/TouchesHandledActivityTest.java +++ b/AndroidAnnotations/functional-test-1-5-tests/src/test/java/org/androidannotations/test15/TouchesHandledActivityTest.java @@ -21,10 +21,12 @@ import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; +import org.robolectric.Robolectric; +import org.robolectric.RobolectricTestRunner; import android.view.MotionEvent; -@RunWith(AndroidAnnotationsTestRunner.class) +@RunWith(RobolectricTestRunner.class) public class TouchesHandledActivityTest { private TouchesHandledActivity_ activity; @@ -33,8 +35,7 @@ public class TouchesHandledActivityTest { @Before public void setup() { - activity = new TouchesHandledActivity_(); - activity.onCreate(null); + activity = Robolectric.buildActivity(TouchesHandledActivity_.class).create().get(); mockedEvent = MotionEvent.obtain(0, 0, 0, 0f, 0f, 0); } diff --git a/AndroidAnnotations/functional-test-1-5-tests/src/test/java/org/androidannotations/test15/TracedActivityTest.java b/AndroidAnnotations/functional-test-1-5-tests/src/test/java/org/androidannotations/test15/TracedActivityTest.java index 48d8aac5fa..486143fd83 100644 --- a/AndroidAnnotations/functional-test-1-5-tests/src/test/java/org/androidannotations/test15/TracedActivityTest.java +++ b/AndroidAnnotations/functional-test-1-5-tests/src/test/java/org/androidannotations/test15/TracedActivityTest.java @@ -21,14 +21,15 @@ import org.junit.Test; import org.junit.runner.RunWith; +import org.robolectric.Robolectric; +import org.robolectric.RobolectricTestRunner; -@RunWith(AndroidAnnotationsTestRunner.class) +@RunWith(RobolectricTestRunner.class) public class TracedActivityTest { @Test public void servicesAreInjected() throws IOException { - TracedActivity_ activity = new TracedActivity_(); - activity.onCreate(null); + TracedActivity_ activity = Robolectric.buildActivity(TracedActivity_.class).create().get(); assertThat(activity.tracedMethodCalled).isFalse(); activity.tracedMethod(null, null); diff --git a/AndroidAnnotations/functional-test-1-5-tests/src/test/java/org/androidannotations/test15/TransactionalActivityTest.java b/AndroidAnnotations/functional-test-1-5-tests/src/test/java/org/androidannotations/test15/TransactionalActivityTest.java index 5e809d00ee..3047fad28c 100644 --- a/AndroidAnnotations/functional-test-1-5-tests/src/test/java/org/androidannotations/test15/TransactionalActivityTest.java +++ b/AndroidAnnotations/functional-test-1-5-tests/src/test/java/org/androidannotations/test15/TransactionalActivityTest.java @@ -26,10 +26,12 @@ import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.InOrder; +import org.robolectric.Robolectric; +import org.robolectric.RobolectricTestRunner; import android.database.sqlite.SQLiteDatabase; -@RunWith(AndroidAnnotationsTestRunner.class) +@RunWith(RobolectricTestRunner.class) public class TransactionalActivityTest { private SQLiteDatabase mockDb; @@ -37,8 +39,7 @@ public class TransactionalActivityTest { @Before public void setup() { - activity = new TransactionalActivity_(); - activity.onCreate(null); + activity = Robolectric.buildActivity(TransactionalActivity_.class).create().get(); mockDb = mock(SQLiteDatabase.class); } diff --git a/AndroidAnnotations/functional-test-1-5-tests/src/test/java/org/androidannotations/test15/ViewsInjectedActivityTest.java b/AndroidAnnotations/functional-test-1-5-tests/src/test/java/org/androidannotations/test15/ViewsInjectedActivityTest.java index 6cb189da59..7ad49bb04f 100644 --- a/AndroidAnnotations/functional-test-1-5-tests/src/test/java/org/androidannotations/test15/ViewsInjectedActivityTest.java +++ b/AndroidAnnotations/functional-test-1-5-tests/src/test/java/org/androidannotations/test15/ViewsInjectedActivityTest.java @@ -15,23 +15,23 @@ */ package org.androidannotations.test15; -//import static org.fest.assertions.Assertions.assertThat; import static org.androidannotations.test15.MyAssertions.assertThat; import org.fest.assertions.Assertions; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; +import org.robolectric.Robolectric; +import org.robolectric.RobolectricTestRunner; -@RunWith(AndroidAnnotationsTestRunner.class) +@RunWith(RobolectricTestRunner.class) public class ViewsInjectedActivityTest { private ViewsInjectedActivity_ activity; @Before public void setup() { - activity = new ViewsInjectedActivity_(); - activity.onCreate(null); + activity = Robolectric.buildActivity(ViewsInjectedActivity_.class).create().get(); } @Test diff --git a/AndroidAnnotations/functional-test-1-5-tests/src/test/java/org/androidannotations/test15/afterinject/AfterInjectActivityTest.java b/AndroidAnnotations/functional-test-1-5-tests/src/test/java/org/androidannotations/test15/afterinject/AfterInjectActivityTest.java index da05807878..bfb459536a 100644 --- a/AndroidAnnotations/functional-test-1-5-tests/src/test/java/org/androidannotations/test15/afterinject/AfterInjectActivityTest.java +++ b/AndroidAnnotations/functional-test-1-5-tests/src/test/java/org/androidannotations/test15/afterinject/AfterInjectActivityTest.java @@ -20,29 +20,31 @@ import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; +import org.robolectric.RobolectricTestRunner; +import org.robolectric.util.ActivityController; -import org.androidannotations.test15.AndroidAnnotationsTestRunner; - -@RunWith(AndroidAnnotationsTestRunner.class) +@RunWith(RobolectricTestRunner.class) public class AfterInjectActivityTest { AfterInjectActivity_ activity; + ActivityController activityController; @Before public void setup() { - activity = new AfterInjectActivity_(); + activityController = ActivityController.of(AfterInjectActivity_.class); + activity = activityController.get(); } @Test public void afterInjectIsCalledInOnCreate() { assertThat(activity.afterInjectCalled).isFalse(); - activity.onCreate(null); + activityController.create(); assertThat(activity.afterInjectCalled).isTrue(); } @Test public void injectionDoneWhenAfterInjectCalled() { - activity.onCreate(null); + activityController.create(); assertThat(activity.notificationManagerNullAfterInject).isFalse(); } diff --git a/AndroidAnnotations/functional-test-1-5-tests/src/test/java/org/androidannotations/test15/afterinject/AfterInjectBeanTest.java b/AndroidAnnotations/functional-test-1-5-tests/src/test/java/org/androidannotations/test15/afterinject/AfterInjectBeanTest.java index d194ec7928..b247a105ad 100644 --- a/AndroidAnnotations/functional-test-1-5-tests/src/test/java/org/androidannotations/test15/afterinject/AfterInjectBeanTest.java +++ b/AndroidAnnotations/functional-test-1-5-tests/src/test/java/org/androidannotations/test15/afterinject/AfterInjectBeanTest.java @@ -20,19 +20,20 @@ import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; +import org.robolectric.Robolectric; +import org.robolectric.RobolectricTestRunner; import android.app.Activity; -import org.androidannotations.test15.AndroidAnnotationsTestRunner; - -@RunWith(AndroidAnnotationsTestRunner.class) +@RunWith(RobolectricTestRunner.class) public class AfterInjectBeanTest { AfterInjectBean bean; @Before public void setup() { - bean = AfterInjectBean_.getInstance_(new Activity()); + Activity activity = Robolectric.buildActivity(Activity.class).create().get(); + bean = AfterInjectBean_.getInstance_(activity); } @Test diff --git a/AndroidAnnotations/functional-test-1-5-tests/src/test/java/org/androidannotations/test15/afterviews/AfterViewsActivityTest.java b/AndroidAnnotations/functional-test-1-5-tests/src/test/java/org/androidannotations/test15/afterviews/AfterViewsActivityTest.java index df034f7e84..6ec8a6319f 100644 --- a/AndroidAnnotations/functional-test-1-5-tests/src/test/java/org/androidannotations/test15/afterviews/AfterViewsActivityTest.java +++ b/AndroidAnnotations/functional-test-1-5-tests/src/test/java/org/androidannotations/test15/afterviews/AfterViewsActivityTest.java @@ -20,22 +20,24 @@ import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; +import org.robolectric.RobolectricTestRunner; +import org.robolectric.util.ActivityController; -import org.androidannotations.test15.AndroidAnnotationsTestRunner; - -@RunWith(AndroidAnnotationsTestRunner.class) +@RunWith(RobolectricTestRunner.class) public class AfterViewsActivityTest { AfterViewsActivity_ activity; + ActivityController controller; @Before public void setup() { - activity = new AfterViewsActivity_(); + controller = ActivityController.of(AfterViewsActivity_.class); + activity = controller.get(); } @Test public void afterViews_called_in_bean_before_activity() { - activity.onCreate(null); + controller.create(); assertThat(activity.afterViewBeanCalledBefore).isTrue(); } diff --git a/AndroidAnnotations/functional-test-1-5-tests/src/test/java/org/androidannotations/test15/application/GeneratedApplicationTest.java b/AndroidAnnotations/functional-test-1-5-tests/src/test/java/org/androidannotations/test15/application/GeneratedApplicationTest.java index 4c80c28e9c..2272ba507e 100644 --- a/AndroidAnnotations/functional-test-1-5-tests/src/test/java/org/androidannotations/test15/application/GeneratedApplicationTest.java +++ b/AndroidAnnotations/functional-test-1-5-tests/src/test/java/org/androidannotations/test15/application/GeneratedApplicationTest.java @@ -17,14 +17,13 @@ import static org.fest.assertions.Assertions.assertThat; -import org.junit.Test; -import org.junit.runner.RunWith; - -import org.androidannotations.test15.roboguice.InjectedTestRunner; import org.androidannotations.test15.roboguice.SampleRoboApplication; import org.androidannotations.test15.roboguice.SampleRoboApplication_; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.robolectric.RobolectricTestRunner; -@RunWith(InjectedTestRunner.class) +@RunWith(RobolectricTestRunner.class) public class GeneratedApplicationTest { @Test diff --git a/AndroidAnnotations/functional-test-1-5-tests/src/test/java/org/androidannotations/test15/ebean/BeanInjectedActivityTest.java b/AndroidAnnotations/functional-test-1-5-tests/src/test/java/org/androidannotations/test15/ebean/BeanInjectedActivityTest.java index 6dbb826b9e..ce126304e9 100644 --- a/AndroidAnnotations/functional-test-1-5-tests/src/test/java/org/androidannotations/test15/ebean/BeanInjectedActivityTest.java +++ b/AndroidAnnotations/functional-test-1-5-tests/src/test/java/org/androidannotations/test15/ebean/BeanInjectedActivityTest.java @@ -20,18 +20,17 @@ import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; +import org.robolectric.Robolectric; +import org.robolectric.RobolectricTestRunner; -import org.androidannotations.test15.AndroidAnnotationsTestRunner; - -@RunWith(AndroidAnnotationsTestRunner.class) +@RunWith(RobolectricTestRunner.class) public class BeanInjectedActivityTest { private BeanInjectedActivity_ activity; @Before public void setup() { - activity = new BeanInjectedActivity_(); - activity.onCreate(null); + activity = Robolectric.buildActivity(BeanInjectedActivity_.class).create().get(); } @Test @@ -53,8 +52,7 @@ public void dependency_with_annotation_value_is_of_annotation_value_type() { public void singleton_dependency_is_same_reference() { SomeSingleton initialDependency = activity.singletonDependency; - BeanInjectedActivity_ newActivity = new BeanInjectedActivity_(); - newActivity.onCreate(null); + BeanInjectedActivity_ newActivity = Robolectric.buildActivity(BeanInjectedActivity_.class).create().get(); assertThat(newActivity.singletonDependency).isSameAs(initialDependency); } diff --git a/AndroidAnnotations/functional-test-1-5-tests/src/test/java/org/androidannotations/test15/ebean/CyclicSingletonTest.java b/AndroidAnnotations/functional-test-1-5-tests/src/test/java/org/androidannotations/test15/ebean/CyclicSingletonTest.java index ec6ab1a88b..f46f09d362 100644 --- a/AndroidAnnotations/functional-test-1-5-tests/src/test/java/org/androidannotations/test15/ebean/CyclicSingletonTest.java +++ b/AndroidAnnotations/functional-test-1-5-tests/src/test/java/org/androidannotations/test15/ebean/CyclicSingletonTest.java @@ -17,13 +17,12 @@ import static org.fest.assertions.Assertions.assertThat; +import org.androidannotations.test15.EmptyActivityWithoutLayout_; import org.junit.Test; import org.junit.runner.RunWith; +import org.robolectric.RobolectricTestRunner; -import org.androidannotations.test15.AndroidAnnotationsTestRunner; -import org.androidannotations.test15.EmptyActivityWithoutLayout_; - -@RunWith(AndroidAnnotationsTestRunner.class) +@RunWith(RobolectricTestRunner.class) public class CyclicSingletonTest { @Test diff --git a/AndroidAnnotations/functional-test-1-5-tests/src/test/java/org/androidannotations/test15/ebean/SomeBeanTest.java b/AndroidAnnotations/functional-test-1-5-tests/src/test/java/org/androidannotations/test15/ebean/SomeBeanTest.java index 79e4c2bb6e..f583edd523 100644 --- a/AndroidAnnotations/functional-test-1-5-tests/src/test/java/org/androidannotations/test15/ebean/SomeBeanTest.java +++ b/AndroidAnnotations/functional-test-1-5-tests/src/test/java/org/androidannotations/test15/ebean/SomeBeanTest.java @@ -17,13 +17,12 @@ import static org.fest.assertions.Assertions.assertThat; +import org.androidannotations.test15.EmptyActivityWithoutLayout_; import org.junit.Test; import org.junit.runner.RunWith; +import org.robolectric.RobolectricTestRunner; -import org.androidannotations.test15.AndroidAnnotationsTestRunner; -import org.androidannotations.test15.EmptyActivityWithoutLayout_; - -@RunWith(AndroidAnnotationsTestRunner.class) +@RunWith(RobolectricTestRunner.class) public class SomeBeanTest { @Test diff --git a/AndroidAnnotations/functional-test-1-5-tests/src/test/java/org/androidannotations/test15/ebean/SomeSingletonTest.java b/AndroidAnnotations/functional-test-1-5-tests/src/test/java/org/androidannotations/test15/ebean/SomeSingletonTest.java index 0ef8f883f0..a7dd025b5d 100644 --- a/AndroidAnnotations/functional-test-1-5-tests/src/test/java/org/androidannotations/test15/ebean/SomeSingletonTest.java +++ b/AndroidAnnotations/functional-test-1-5-tests/src/test/java/org/androidannotations/test15/ebean/SomeSingletonTest.java @@ -15,22 +15,23 @@ */ package org.androidannotations.test15.ebean; -import android.content.Context; -import android.view.View; +import static org.fest.assertions.Assertions.assertThat; +import static org.mockito.Mockito.mock; + +import java.lang.reflect.Field; + import org.androidannotations.api.view.HasViews; import org.androidannotations.api.view.OnViewChangedNotifier; -import org.androidannotations.test15.AndroidAnnotationsTestRunner; import org.androidannotations.test15.EmptyActivityWithoutLayout_; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; +import org.robolectric.RobolectricTestRunner; -import java.lang.reflect.Field; - -import static org.fest.assertions.Assertions.assertThat; -import static org.mockito.Mockito.mock; +import android.content.Context; +import android.view.View; -@RunWith(AndroidAnnotationsTestRunner.class) +@RunWith(RobolectricTestRunner.class) public class SomeSingletonTest { @Before diff --git a/AndroidAnnotations/functional-test-1-5-tests/src/test/java/org/androidannotations/test15/efragment/MyFragmentActivityTest.java b/AndroidAnnotations/functional-test-1-5-tests/src/test/java/org/androidannotations/test15/efragment/MyFragmentActivityTest.java index df3553b14b..66ddc43851 100644 --- a/AndroidAnnotations/functional-test-1-5-tests/src/test/java/org/androidannotations/test15/efragment/MyFragmentActivityTest.java +++ b/AndroidAnnotations/functional-test-1-5-tests/src/test/java/org/androidannotations/test15/efragment/MyFragmentActivityTest.java @@ -17,27 +17,28 @@ import static org.fest.assertions.Assertions.assertThat; -/** - * Those test are disabled for now, we need to update Robolectric version for - * fragment support, however we'll have to solve other issues to do so. - */ -// @RunWith(AndroidAnnotationsTestRunner.class) +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.robolectric.Robolectric; +import org.robolectric.RobolectricTestRunner; + +@RunWith(RobolectricTestRunner.class) public class MyFragmentActivityTest { private MyFragmentActivity_ activity; - // @Before + @Before public void setup() { - activity = new MyFragmentActivity_(); - activity.onCreate(null); + activity = Robolectric.buildActivity(MyFragmentActivity_.class).create().get(); } - // @Test + @Test public void can_inject_native_fragment_with_default_id() { assertThat(activity.myFragment).isNotNull(); } - // @Test + @Test public void can_inject_native_fragment_with_id() { assertThat(activity.myFragment2).isNotNull(); } diff --git a/AndroidAnnotations/functional-test-1-5-tests/src/test/java/org/androidannotations/test15/efragment/MyListFragmentTest.java b/AndroidAnnotations/functional-test-1-5-tests/src/test/java/org/androidannotations/test15/efragment/MyListFragmentTest.java index 375c2fa7ee..e137299d06 100644 --- a/AndroidAnnotations/functional-test-1-5-tests/src/test/java/org/androidannotations/test15/efragment/MyListFragmentTest.java +++ b/AndroidAnnotations/functional-test-1-5-tests/src/test/java/org/androidannotations/test15/efragment/MyListFragmentTest.java @@ -17,10 +17,11 @@ import static org.fest.assertions.Assertions.assertThat; -import org.androidannotations.test15.AndroidAnnotationsTestRunner; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; +import org.robolectric.Robolectric; +import org.robolectric.RobolectricTestRunner; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentActivity; @@ -29,10 +30,7 @@ import android.view.View; import android.widget.ListView; -import com.xtremelabs.robolectric.Robolectric; -import com.xtremelabs.robolectric.shadows.ShadowListFragment; - -@RunWith(AndroidAnnotationsTestRunner.class) +@RunWith(RobolectricTestRunner.class) public class MyListFragmentTest { private static final int TESTED_CLICKED_INDEX = 4; @@ -41,8 +39,6 @@ public class MyListFragmentTest { @Before public void setup() { - Robolectric.bindShadowClass(ShadowListFragment.class); - myListFragment = new MyListFragment_(); startFragment(myListFragment); } @@ -59,7 +55,8 @@ public void is_item_click_available_from_list_fragment() { } public static void startFragment(Fragment fragment) { - FragmentManager fragmentManager = new FragmentActivity().getSupportFragmentManager(); + FragmentActivity fragmentActivity = Robolectric.buildActivity(FragmentActivity.class).create().start().visible().get(); + FragmentManager fragmentManager = fragmentActivity.getSupportFragmentManager(); FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); fragmentTransaction.add(fragment, null); fragmentTransaction.commit(); diff --git a/AndroidAnnotations/functional-test-1-5-tests/src/test/java/org/androidannotations/test15/efragment/MySupportFragmentActivityTest.java b/AndroidAnnotations/functional-test-1-5-tests/src/test/java/org/androidannotations/test15/efragment/MySupportFragmentActivityTest.java index f9d98a4300..39f997b0b3 100644 --- a/AndroidAnnotations/functional-test-1-5-tests/src/test/java/org/androidannotations/test15/efragment/MySupportFragmentActivityTest.java +++ b/AndroidAnnotations/functional-test-1-5-tests/src/test/java/org/androidannotations/test15/efragment/MySupportFragmentActivityTest.java @@ -17,20 +17,20 @@ import static org.fest.assertions.Assertions.assertThat; -import org.androidannotations.test15.AndroidAnnotationsTestRunner; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; +import org.robolectric.Robolectric; +import org.robolectric.RobolectricTestRunner; -@RunWith(AndroidAnnotationsTestRunner.class) +@RunWith(RobolectricTestRunner.class) public class MySupportFragmentActivityTest { private MySupportFragmentActivity_ activity; @Before public void setup() { - activity = new MySupportFragmentActivity_(); - activity.onCreate(null); + activity = Robolectric.buildActivity(MySupportFragmentActivity_.class).create().get(); } @Test diff --git a/AndroidAnnotations/functional-test-1-5-tests/src/test/java/org/androidannotations/test15/eintentservice/MyIntentServiceTest.java b/AndroidAnnotations/functional-test-1-5-tests/src/test/java/org/androidannotations/test15/eintentservice/MyIntentServiceTest.java index 5b75cda67d..4524516035 100644 --- a/AndroidAnnotations/functional-test-1-5-tests/src/test/java/org/androidannotations/test15/eintentservice/MyIntentServiceTest.java +++ b/AndroidAnnotations/functional-test-1-5-tests/src/test/java/org/androidannotations/test15/eintentservice/MyIntentServiceTest.java @@ -17,15 +17,15 @@ import static org.fest.assertions.Assertions.assertThat; -import org.androidannotations.test15.AndroidAnnotationsTestRunner; import org.androidannotations.test15.EmptyActivityWithoutLayout; import org.androidannotations.test15.EmptyActivityWithoutLayout_; import org.junit.Test; import org.junit.runner.RunWith; +import org.robolectric.RobolectricTestRunner; import android.content.Intent; -@RunWith(AndroidAnnotationsTestRunner.class) +@RunWith(RobolectricTestRunner.class) public class MyIntentServiceTest { @Test diff --git a/AndroidAnnotations/functional-test-1-5-tests/src/test/java/org/androidannotations/test15/eview/CustomButtonTest.java b/AndroidAnnotations/functional-test-1-5-tests/src/test/java/org/androidannotations/test15/eview/CustomButtonTest.java index f30d071bb7..3f408c88dc 100644 --- a/AndroidAnnotations/functional-test-1-5-tests/src/test/java/org/androidannotations/test15/eview/CustomButtonTest.java +++ b/AndroidAnnotations/functional-test-1-5-tests/src/test/java/org/androidannotations/test15/eview/CustomButtonTest.java @@ -17,20 +17,20 @@ import static org.fest.assertions.Assertions.assertThat; +import org.androidannotations.test15.EmptyActivityWithoutLayout_; import org.junit.Test; import org.junit.runner.RunWith; +import org.robolectric.Robolectric; +import org.robolectric.RobolectricTestRunner; import android.content.Context; -import org.androidannotations.test15.AndroidAnnotationsTestRunner; -import org.androidannotations.test15.EmptyActivityWithoutLayout_; - -@RunWith(AndroidAnnotationsTestRunner.class) +@RunWith(RobolectricTestRunner.class) public class CustomButtonTest { @Test public void constructor_parameters_are_transmitted_from_factory_method() { - Context context = new EmptyActivityWithoutLayout_(); + Context context = Robolectric.buildActivity(EmptyActivityWithoutLayout_.class).create().get(); int parameter = 42; CustomButton button = CustomButton_.build(context, parameter); assertThat(button.constructorParameter).isEqualTo(parameter); @@ -38,7 +38,7 @@ public void constructor_parameters_are_transmitted_from_factory_method() { @Test public void factory_method_builds_inflated_instance() { - Context context = new EmptyActivityWithoutLayout_(); + Context context = Robolectric.buildActivity(EmptyActivityWithoutLayout_.class).create().get(); CustomButton button = CustomButton_.build(context); assertThat(button.afterViewsCalled).isTrue(); } diff --git a/AndroidAnnotations/functional-test-1-5-tests/src/test/java/org/androidannotations/test15/eviewgroup/CustomFrameLayoutTest.java b/AndroidAnnotations/functional-test-1-5-tests/src/test/java/org/androidannotations/test15/eviewgroup/CustomFrameLayoutTest.java index 6c46735151..c10c6424a9 100644 --- a/AndroidAnnotations/functional-test-1-5-tests/src/test/java/org/androidannotations/test15/eviewgroup/CustomFrameLayoutTest.java +++ b/AndroidAnnotations/functional-test-1-5-tests/src/test/java/org/androidannotations/test15/eviewgroup/CustomFrameLayoutTest.java @@ -17,19 +17,19 @@ import static org.fest.assertions.Assertions.assertThat; -import org.junit.Test; -import org.junit.runner.RunWith; - -import org.androidannotations.test15.AndroidAnnotationsTestRunner; import org.androidannotations.test15.EmptyActivityWithoutLayout; import org.androidannotations.test15.EmptyActivityWithoutLayout_; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.robolectric.Robolectric; +import org.robolectric.RobolectricTestRunner; -@RunWith(AndroidAnnotationsTestRunner.class) +@RunWith(RobolectricTestRunner.class) public class CustomFrameLayoutTest { @Test public void shouldHaveLayoutAfterCreate() { - EmptyActivityWithoutLayout activity = new EmptyActivityWithoutLayout_(); + EmptyActivityWithoutLayout activity = Robolectric.buildActivity(EmptyActivityWithoutLayout_.class).create().get(); CustomFrameLayout component = CustomFrameLayout_.build(activity, 0); assertThat(component.subtitle).isNotNull(); assertThat(component.tv).isNotNull(); diff --git a/AndroidAnnotations/functional-test-1-5-tests/src/test/java/org/androidannotations/test15/greendroid/MyGreenDroidActivityTest.java b/AndroidAnnotations/functional-test-1-5-tests/src/test/java/org/androidannotations/test15/greendroid/MyGreenDroidActivityTest.java index 195c946da5..db7e869e67 100644 --- a/AndroidAnnotations/functional-test-1-5-tests/src/test/java/org/androidannotations/test15/greendroid/MyGreenDroidActivityTest.java +++ b/AndroidAnnotations/functional-test-1-5-tests/src/test/java/org/androidannotations/test15/greendroid/MyGreenDroidActivityTest.java @@ -17,27 +17,30 @@ import static org.fest.assertions.Assertions.assertThat; +import org.androidannotations.test15.R; +import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; +import org.robolectric.Robolectric; +import org.robolectric.RobolectricTestRunner; -import org.androidannotations.test15.AndroidAnnotationsTestRunner; -import org.androidannotations.test15.R; - -@RunWith(AndroidAnnotationsTestRunner.class) +@RunWith(RobolectricTestRunner.class) public class MyGreenDroidActivityTest { + MyGreenDroidActivity_ activity; + + @Before + public void setup() { + activity = Robolectric.buildActivity(MyGreenDroidActivity_.class).create().get(); + } + @Test public void when_layout_defined_then_onCreate_calls_setActionBarContentView_with_layout_id_value() { - MyGreenDroidActivity_ activity = new MyGreenDroidActivity_(); - activity.onCreate(null); assertThat(activity.layoutResID).isEqualTo(R.layout.main); } @Test public void afterViews_method_is_called_in_setActionBarContentView() { - MyGreenDroidActivity_ activity = new MyGreenDroidActivity_(); - activity.onCreate(null); - activity.setActionBarContentView(0); assertThat(activity.afterViewsCalled).isTrue(); } diff --git a/AndroidAnnotations/functional-test-1-5-tests/src/test/java/org/androidannotations/test15/inheritance/InheritanceTest.java b/AndroidAnnotations/functional-test-1-5-tests/src/test/java/org/androidannotations/test15/inheritance/InheritanceTest.java index 7e22faae3c..e350904da8 100644 --- a/AndroidAnnotations/functional-test-1-5-tests/src/test/java/org/androidannotations/test15/inheritance/InheritanceTest.java +++ b/AndroidAnnotations/functional-test-1-5-tests/src/test/java/org/androidannotations/test15/inheritance/InheritanceTest.java @@ -20,14 +20,14 @@ import org.androidannotations.api.view.HasViews; import org.androidannotations.api.view.OnViewChangedNotifier; -import org.androidannotations.test15.AndroidAnnotationsTestRunner; import org.junit.Test; import org.junit.runner.RunWith; +import org.robolectric.RobolectricTestRunner; import android.app.Activity; import android.content.Context; -@RunWith(AndroidAnnotationsTestRunner.class) +@RunWith(RobolectricTestRunner.class) public class InheritanceTest { @Test diff --git a/AndroidAnnotations/functional-test-1-5-tests/src/test/java/org/androidannotations/test15/instancestate/SaveInstanceStateActivityParameterizedTest.java b/AndroidAnnotations/functional-test-1-5-tests/src/test/java/org/androidannotations/test15/instancestate/SaveInstanceStateActivityParameterizedTest.java index d40eb74596..4e8523de2c 100644 --- a/AndroidAnnotations/functional-test-1-5-tests/src/test/java/org/androidannotations/test15/instancestate/SaveInstanceStateActivityParameterizedTest.java +++ b/AndroidAnnotations/functional-test-1-5-tests/src/test/java/org/androidannotations/test15/instancestate/SaveInstanceStateActivityParameterizedTest.java @@ -22,22 +22,19 @@ import java.util.Arrays; import java.util.Collection; -import org.junit.Before; +import org.fest.util.Lists; import org.junit.Test; import org.junit.runner.RunWith; -import org.junit.runners.Parameterized.Parameters; +import org.robolectric.ParameterizedRobolectricTestRunner; +import org.robolectric.ParameterizedRobolectricTestRunner.Parameters; +import org.robolectric.Robolectric; import android.os.Bundle; -import com.google.inject.internal.Lists; -import org.androidannotations.test15.RobolectricParameterized; -import com.xtremelabs.robolectric.Robolectric; -import com.xtremelabs.robolectric.shadows.CustomShadowBundle; - -@RunWith(RobolectricParameterized.class) +@RunWith(ParameterizedRobolectricTestRunner.class) public class SaveInstanceStateActivityParameterizedTest { - - @Parameters + + @Parameters(name = "{0}") public static Collection generateTestCases() throws Exception { ArrayList> myGenericParcelableBeanArrayList = new ArrayList>(); myGenericParcelableBeanArrayList.add(new MyGenericParcelableBean((Integer) 1)); @@ -105,21 +102,16 @@ public static Collection generateTestCases() throws Exception { /** * @see RobolectricParameterized */ - public void init(String fieldName, Object value) throws Exception { + public SaveInstanceStateActivityParameterizedTest(String fieldName, Object value) throws Exception { this.fieldName = fieldName; this.value = value; field = SaveInstanceStateActivity.class.getDeclaredField(fieldName); field.setAccessible(true); } - @Before - public void setup() throws Exception { - Robolectric.bindShadowClass(CustomShadowBundle.class); - } - @Test public void can_save_field() throws Exception { - SaveInstanceStateActivity_ savedActivity = new SaveInstanceStateActivity_(); + SaveInstanceStateActivity_ savedActivity = Robolectric.buildActivity(SaveInstanceStateActivity_.class).create().get(); Bundle bundle = saveField(savedActivity); @@ -128,11 +120,11 @@ public void can_save_field() throws Exception { @Test public void can_load_field() throws Exception { - SaveInstanceStateActivity_ savedActivity = new SaveInstanceStateActivity_(); + SaveInstanceStateActivity_ savedActivity = Robolectric.buildActivity(SaveInstanceStateActivity_.class).create().get(); Bundle bundle = saveField(savedActivity); - SaveInstanceStateActivity_ recreatedActivity = new SaveInstanceStateActivity_(); + SaveInstanceStateActivity_ recreatedActivity = Robolectric.buildActivity(SaveInstanceStateActivity_.class).create().get(); Object initialFieldValue = field.get(recreatedActivity); diff --git a/AndroidAnnotations/functional-test-1-5-tests/src/test/java/org/androidannotations/test15/instancestate/SaveInstanceStateActivityTest.java b/AndroidAnnotations/functional-test-1-5-tests/src/test/java/org/androidannotations/test15/instancestate/SaveInstanceStateActivityTest.java index 2bb8253bb1..b7e517c2ee 100644 --- a/AndroidAnnotations/functional-test-1-5-tests/src/test/java/org/androidannotations/test15/instancestate/SaveInstanceStateActivityTest.java +++ b/AndroidAnnotations/functional-test-1-5-tests/src/test/java/org/androidannotations/test15/instancestate/SaveInstanceStateActivityTest.java @@ -15,35 +15,24 @@ */ package org.androidannotations.test15.instancestate; -import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; +import org.robolectric.Robolectric; +import org.robolectric.RobolectricTestRunner; import android.os.Bundle; -import org.androidannotations.test15.AndroidAnnotationsTestRunner; -import com.xtremelabs.robolectric.Robolectric; -import com.xtremelabs.robolectric.shadows.CustomShadowBundle; - -@RunWith(AndroidAnnotationsTestRunner.class) +@RunWith(RobolectricTestRunner.class) public class SaveInstanceStateActivityTest { - @Before - public void setup() throws Exception { - Robolectric.bindShadowClass(CustomShadowBundle.class); - } - @Test public void can_create_with_empty_bundle() { - SaveInstanceStateActivity_ activity = new SaveInstanceStateActivity_(); - Bundle emptyBundle = new Bundle(); - activity.onCreate(emptyBundle); + Robolectric.buildActivity(SaveInstanceStateActivity_.class).create(new Bundle()); } @Test public void can_create_without_saved_state() { - SaveInstanceStateActivity_ activity = new SaveInstanceStateActivity_(); - activity.onCreate(null); + Robolectric.buildActivity(SaveInstanceStateActivity_.class).create(); } } diff --git a/AndroidAnnotations/functional-test-1-5-tests/src/test/java/org/androidannotations/test15/menu/OptionsMenuActivityTest.java b/AndroidAnnotations/functional-test-1-5-tests/src/test/java/org/androidannotations/test15/menu/OptionsMenuActivityTest.java index 88a9331e1f..df0a980e60 100644 --- a/AndroidAnnotations/functional-test-1-5-tests/src/test/java/org/androidannotations/test15/menu/OptionsMenuActivityTest.java +++ b/AndroidAnnotations/functional-test-1-5-tests/src/test/java/org/androidannotations/test15/menu/OptionsMenuActivityTest.java @@ -19,28 +19,23 @@ import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; +import org.androidannotations.test15.R; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; +import org.robolectric.Robolectric; +import org.robolectric.RobolectricTestRunner; import android.view.MenuItem; -import org.androidannotations.test15.AndroidAnnotationsTestRunner; -import org.androidannotations.test15.R; -import com.xtremelabs.robolectric.Robolectric; -import com.xtremelabs.robolectric.shadows.ShadowHtml; - -@RunWith(AndroidAnnotationsTestRunner.class) +@RunWith(RobolectricTestRunner.class) public class OptionsMenuActivityTest { private OptionsMenuActivity_ activity; @Before public void setup() { - Robolectric.bindShadowClass(ShadowHtml.class); - - activity = new OptionsMenuActivity_(); - activity.onCreate(null); + activity = Robolectric.buildActivity(OptionsMenuActivity_.class).create().get(); } @Test diff --git a/AndroidAnnotations/functional-test-1-5-tests/src/test/java/org/androidannotations/test15/ormlite/OrmLiteActivityTest.java b/AndroidAnnotations/functional-test-1-5-tests/src/test/java/org/androidannotations/test15/ormlite/OrmLiteActivityTest.java index c3f7998f74..d81821c3da 100644 --- a/AndroidAnnotations/functional-test-1-5-tests/src/test/java/org/androidannotations/test15/ormlite/OrmLiteActivityTest.java +++ b/AndroidAnnotations/functional-test-1-5-tests/src/test/java/org/androidannotations/test15/ormlite/OrmLiteActivityTest.java @@ -15,22 +15,22 @@ */ package org.androidannotations.test15.ormlite; -import org.androidannotations.test15.AndroidAnnotationsTestRunner; +import static org.fest.assertions.Assertions.assertThat; + import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; +import org.robolectric.Robolectric; +import org.robolectric.RobolectricTestRunner; -import static org.fest.assertions.Assertions.assertThat; - -@RunWith(AndroidAnnotationsTestRunner.class) +@RunWith(RobolectricTestRunner.class) public class OrmLiteActivityTest { private OrmLiteActivity_ activity; @Before public void setup() { - activity = new OrmLiteActivity_(); - activity.onCreate(null); + activity = Robolectric.buildActivity(OrmLiteActivity_.class).create().get(); } @Test diff --git a/AndroidAnnotations/functional-test-1-5-tests/src/test/java/org/androidannotations/test15/prefs/PrefsActivityTest.java b/AndroidAnnotations/functional-test-1-5-tests/src/test/java/org/androidannotations/test15/prefs/PrefsActivityTest.java index cbec60c606..78d55aeebf 100644 --- a/AndroidAnnotations/functional-test-1-5-tests/src/test/java/org/androidannotations/test15/prefs/PrefsActivityTest.java +++ b/AndroidAnnotations/functional-test-1-5-tests/src/test/java/org/androidannotations/test15/prefs/PrefsActivityTest.java @@ -17,16 +17,16 @@ import static org.fest.assertions.Assertions.assertThat; +import org.androidannotations.test15.R; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; +import org.robolectric.Robolectric; +import org.robolectric.RobolectricTestRunner; import android.content.SharedPreferences; -import org.androidannotations.test15.AndroidAnnotationsTestRunner; -import org.androidannotations.test15.R; - -@RunWith(AndroidAnnotationsTestRunner.class) +@RunWith(RobolectricTestRunner.class) public class PrefsActivityTest { private PrefsActivity_ activity; @@ -36,8 +36,7 @@ public class PrefsActivityTest { @Before public void setup() { - activity = new PrefsActivity_(); - activity.onCreate(null); + activity = Robolectric.buildActivity(PrefsActivity_.class).create().get(); somePrefs = activity.somePrefs; sharedPref = somePrefs.getSharedPreferences(); } diff --git a/AndroidAnnotations/functional-test-1-5-tests/src/test/java/org/androidannotations/test15/res/ResActivityTest.java b/AndroidAnnotations/functional-test-1-5-tests/src/test/java/org/androidannotations/test15/res/ResActivityTest.java index 4af810ad18..e239fb1b04 100644 --- a/AndroidAnnotations/functional-test-1-5-tests/src/test/java/org/androidannotations/test15/res/ResActivityTest.java +++ b/AndroidAnnotations/functional-test-1-5-tests/src/test/java/org/androidannotations/test15/res/ResActivityTest.java @@ -19,29 +19,25 @@ import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; +import org.androidannotations.test15.R; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; +import org.robolectric.Robolectric; +import org.robolectric.RobolectricTestRunner; import android.content.res.Resources; import android.text.Html; import android.view.animation.AnimationUtils; -import org.androidannotations.test15.AndroidAnnotationsTestRunner; -import org.androidannotations.test15.R; -import com.xtremelabs.robolectric.Robolectric; -import com.xtremelabs.robolectric.shadows.ShadowHtml; - -@RunWith(AndroidAnnotationsTestRunner.class) +@RunWith(RobolectricTestRunner.class) public class ResActivityTest { private ResActivity_ activity; @Before public void setup() { - Robolectric.bindShadowClass(ShadowHtml.class); - activity = new ResActivity_(); - activity.onCreate(null); + activity = Robolectric.buildActivity(ResActivity_.class).create().get(); } @Test diff --git a/AndroidAnnotations/functional-test-1-5-tests/src/test/java/org/androidannotations/test15/rest/HttpMethodServiceTest.java b/AndroidAnnotations/functional-test-1-5-tests/src/test/java/org/androidannotations/test15/rest/HttpMethodServiceTest.java index f8114a0c63..cfc3cd7b84 100644 --- a/AndroidAnnotations/functional-test-1-5-tests/src/test/java/org/androidannotations/test15/rest/HttpMethodServiceTest.java +++ b/AndroidAnnotations/functional-test-1-5-tests/src/test/java/org/androidannotations/test15/rest/HttpMethodServiceTest.java @@ -19,17 +19,17 @@ import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; -import org.androidannotations.test15.AndroidAnnotationsTestRunner; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mockito; +import org.robolectric.RobolectricTestRunner; import org.springframework.http.HttpEntity; import org.springframework.http.HttpHeaders; import org.springframework.http.HttpMethod; import org.springframework.http.ResponseEntity; import org.springframework.web.client.RestTemplate; -@RunWith(AndroidAnnotationsTestRunner.class) +@RunWith(RobolectricTestRunner.class) public class HttpMethodServiceTest { @Test diff --git a/AndroidAnnotations/functional-test-1-5-tests/src/test/java/org/androidannotations/test15/rest/MyServiceTest.java b/AndroidAnnotations/functional-test-1-5-tests/src/test/java/org/androidannotations/test15/rest/MyServiceTest.java index 3996f39041..2aeca791c2 100644 --- a/AndroidAnnotations/functional-test-1-5-tests/src/test/java/org/androidannotations/test15/rest/MyServiceTest.java +++ b/AndroidAnnotations/functional-test-1-5-tests/src/test/java/org/androidannotations/test15/rest/MyServiceTest.java @@ -15,8 +15,17 @@ */ package org.androidannotations.test15.rest; -import com.xtremelabs.robolectric.Robolectric; -import org.androidannotations.test15.AndroidAnnotationsTestRunner; +import static junit.framework.Assert.assertEquals; +import static org.mockito.Matchers.argThat; +import static org.mockito.Matchers.eq; +import static org.mockito.Matchers.startsWith; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.verify; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + import org.androidannotations.test15.rest.RequestTestBuilder.RequestTestBuilderExecutor; import org.apache.http.Header; import org.apache.http.message.BasicHeader; @@ -24,22 +33,15 @@ import org.junit.runner.RunWith; import org.mockito.ArgumentMatcher; import org.mockito.Mockito; +import org.robolectric.Robolectric; +import org.robolectric.RobolectricTestRunner; import org.springframework.http.HttpEntity; import org.springframework.http.HttpMethod; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.web.client.RestTemplate; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import static junit.framework.Assert.assertEquals; -import static org.mockito.Matchers.*; -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.verify; - -@RunWith(AndroidAnnotationsTestRunner.class) +@RunWith(RobolectricTestRunner.class) public class MyServiceTest { private MyService_ myService = new MyService_(null); diff --git a/AndroidAnnotations/functional-test-1-5-tests/src/test/java/org/androidannotations/test15/rest/RequestTestBuilder.java b/AndroidAnnotations/functional-test-1-5-tests/src/test/java/org/androidannotations/test15/rest/RequestTestBuilder.java index 3ada934556..1ccd8d89d3 100644 --- a/AndroidAnnotations/functional-test-1-5-tests/src/test/java/org/androidannotations/test15/rest/RequestTestBuilder.java +++ b/AndroidAnnotations/functional-test-1-5-tests/src/test/java/org/androidannotations/test15/rest/RequestTestBuilder.java @@ -29,14 +29,13 @@ import org.apache.http.message.BasicHeader; import org.mockito.ArgumentMatcher; import org.mockito.Mockito; +import org.robolectric.Robolectric; import org.springframework.http.HttpEntity; import org.springframework.http.HttpHeaders; import org.springframework.http.HttpMethod; import org.springframework.http.HttpStatus; import org.springframework.web.client.RestTemplate; -import com.xtremelabs.robolectric.Robolectric; - public class RequestTestBuilder { private MyService_ myService = new MyService_(null); private HttpEntityArgumentMatcher entityArgumentMatcher = new HttpEntityArgumentMatcher();; diff --git a/AndroidAnnotations/functional-test-1-5-tests/src/test/java/org/androidannotations/test15/roboguice/InjectedActivityTest.java b/AndroidAnnotations/functional-test-1-5-tests/src/test/java/org/androidannotations/test15/roboguice/InjectedActivityTest.java index 3e5e8f1346..61fc92e25c 100644 --- a/AndroidAnnotations/functional-test-1-5-tests/src/test/java/org/androidannotations/test15/roboguice/InjectedActivityTest.java +++ b/AndroidAnnotations/functional-test-1-5-tests/src/test/java/org/androidannotations/test15/roboguice/InjectedActivityTest.java @@ -15,26 +15,31 @@ */ package org.androidannotations.test15.roboguice; -import static org.hamcrest.CoreMatchers.*; -import static org.junit.Assert.*; +import static org.hamcrest.CoreMatchers.equalTo; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertSame; +import static org.junit.Assert.assertThat; +import org.androidannotations.test15.R; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; +import org.robolectric.Robolectric; +import org.robolectric.RobolectricTestRunner; +import roboguice.RoboGuice; import android.content.Context; import android.widget.TextView; import com.google.inject.Inject; -import org.androidannotations.test15.R; -@RunWith(InjectedTestRunner.class) +@RunWith(RobolectricTestRunner.class) public class InjectedActivityTest { @Inject Context context; - @Inject ActivityWithRoboGuice_ injectedActivity; @Inject @@ -45,23 +50,23 @@ public class InjectedActivityTest { @Before public void setUp() { fakeDateProvider.setDate("December 8, 2010"); + injectedActivity = Robolectric.buildActivity(ActivityWithRoboGuice_.class).create().get(); } @Test public void shouldAssignStringToTextView() throws Exception { - injectedActivity.onCreate(null); TextView injectedTextView = (TextView) injectedActivity.findViewById(R.id.injected_text_view); assertThat(injectedTextView.getText().toString(), equalTo("Roboguice Activity tested with Robolectric - December 8, 2010")); } @Test public void shouldInjectSingletons() throws Exception { - Counter instance = injectedActivity.getInjector().getInstance(Counter.class); + Counter instance = RoboGuice.getInjector(injectedActivity).getInstance(Counter.class); assertEquals(0, instance.count); instance.count++; - Counter instanceAgain = injectedActivity.getInjector().getInstance(Counter.class); + Counter instanceAgain = RoboGuice.getInjector(injectedActivity).getInstance(Counter.class); assertEquals(1, instanceAgain.count); assertSame(fieldCounter, instance); diff --git a/AndroidAnnotations/functional-test-1-5-tests/src/test/java/org/androidannotations/test15/roboguice/InjectedTestRunner.java b/AndroidAnnotations/functional-test-1-5-tests/src/test/java/org/androidannotations/test15/roboguice/InjectedTestRunner.java deleted file mode 100644 index 44c2d81062..0000000000 --- a/AndroidAnnotations/functional-test-1-5-tests/src/test/java/org/androidannotations/test15/roboguice/InjectedTestRunner.java +++ /dev/null @@ -1,52 +0,0 @@ -/** - * Copyright (C) 2010-2014 eBusiness Information, Excilys Group - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not - * use this file except in compliance with the License. You may obtain a copy of - * the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed To in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations under - * the License. - */ -package org.androidannotations.test15.roboguice; - -import org.junit.runners.model.InitializationError; - -import roboguice.inject.ContextScope; -import android.app.Application; - -import com.google.inject.Injector; -import org.androidannotations.test15.AndroidAnnotationsTestRunner; -import com.xtremelabs.robolectric.Robolectric; - -public class InjectedTestRunner extends AndroidAnnotationsTestRunner { - - public InjectedTestRunner(Class testClass) throws InitializationError { - super(testClass); - } - - @Override - protected Application createApplication() { - SampleRoboApplication application = (SampleRoboApplication) super.createApplication(); - application.setModule(new RobolectricSampleTestModule()); - return application; - } - - @Override - public void prepareTest(Object test) { - SampleRoboApplication application = (SampleRoboApplication) Robolectric.application; - - // This project's application does not extend GuiceInjectableApplication - // therefore we need to enter the ContextScope manually. - Injector injector = application.getInjector(); - ContextScope scope = injector.getInstance(ContextScope.class); - scope.enter(application); - - injector.injectMembers(test); - } -} diff --git a/AndroidAnnotations/functional-test-1-5-tests/src/test/java/org/androidannotations/test15/roboguice/RobolectricSampleTestModule.java b/AndroidAnnotations/functional-test-1-5-tests/src/test/java/org/androidannotations/test15/roboguice/RobolectricSampleTestModule.java index 546b9ed1f9..4a8cfbfdf4 100644 --- a/AndroidAnnotations/functional-test-1-5-tests/src/test/java/org/androidannotations/test15/roboguice/RobolectricSampleTestModule.java +++ b/AndroidAnnotations/functional-test-1-5-tests/src/test/java/org/androidannotations/test15/roboguice/RobolectricSampleTestModule.java @@ -17,13 +17,13 @@ import java.util.Date; -import roboguice.config.AbstractAndroidModule; import roboguice.util.Ln; import android.util.Log; +import com.google.inject.AbstractModule; import com.google.inject.Scopes; -public class RobolectricSampleTestModule extends AbstractAndroidModule { +public class RobolectricSampleTestModule extends AbstractModule { @Override protected void configure() { diff --git a/AndroidAnnotations/functional-test-1-5-tests/src/test/java/org/androidannotations/test15/roboguice/TestSampleRoboApplication_.java b/AndroidAnnotations/functional-test-1-5-tests/src/test/java/org/androidannotations/test15/roboguice/TestSampleRoboApplication_.java new file mode 100644 index 0000000000..bdb0357e99 --- /dev/null +++ b/AndroidAnnotations/functional-test-1-5-tests/src/test/java/org/androidannotations/test15/roboguice/TestSampleRoboApplication_.java @@ -0,0 +1,37 @@ +package org.androidannotations.test15.roboguice; + +import java.lang.reflect.Method; + +import org.robolectric.Robolectric; +import org.robolectric.TestLifecycleApplication; + +import roboguice.RoboGuice; +import android.app.Application; + +public class TestSampleRoboApplication_ extends Application implements TestLifecycleApplication { + @Override + public void onCreate() { + super.onCreate(); + + RoboGuice.setBaseApplicationInjector(this, RoboGuice.DEFAULT_STAGE, + RoboGuice.newDefaultRoboModule(this), new RobolectricSampleModule()); + } + + @Override + public void beforeTest(Method method) { + } + + @Override + public void prepareTest(Object test) { + TestSampleRoboApplication_ application = (TestSampleRoboApplication_) Robolectric.application; + + RoboGuice.setBaseApplicationInjector(application, RoboGuice.DEFAULT_STAGE, + RoboGuice.newDefaultRoboModule(application), new RobolectricSampleTestModule()); + + RoboGuice.getInjector(application).injectMembers(test); + } + + @Override + public void afterTest(Method method) { + } +} \ No newline at end of file diff --git a/AndroidAnnotations/functional-test-1-5-tests/src/test/java/org/androidannotations/test15/sherlock/MySherlockActivityTest.java b/AndroidAnnotations/functional-test-1-5-tests/src/test/java/org/androidannotations/test15/sherlock/MySherlockActivityTest.java index b06fdad388..ff1510d393 100644 --- a/AndroidAnnotations/functional-test-1-5-tests/src/test/java/org/androidannotations/test15/sherlock/MySherlockActivityTest.java +++ b/AndroidAnnotations/functional-test-1-5-tests/src/test/java/org/androidannotations/test15/sherlock/MySherlockActivityTest.java @@ -19,28 +19,23 @@ import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; +import org.androidannotations.test15.R; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; +import org.robolectric.Robolectric; +import org.robolectric.RobolectricTestRunner; import android.view.MenuItem; -import org.androidannotations.test15.AndroidAnnotationsTestRunner; -import org.androidannotations.test15.R; -import com.xtremelabs.robolectric.Robolectric; -import com.xtremelabs.robolectric.shadows.ShadowHtml; - -@RunWith(AndroidAnnotationsTestRunner.class) +@RunWith(RobolectricTestRunner.class) public class MySherlockActivityTest { private MySherlockActivity_ activity; @Before public void setup() { - Robolectric.bindShadowClass(ShadowHtml.class); - - activity = new MySherlockActivity_(); - activity.onCreate(null); + activity = Robolectric.buildActivity(MySherlockActivity_.class).create().get(); } @Test diff --git a/AndroidAnnotations/functional-test-1-5-tests/src/test/resources/org.robolectric.Config.properties b/AndroidAnnotations/functional-test-1-5-tests/src/test/resources/org.robolectric.Config.properties new file mode 100644 index 0000000000..8bd403be7b --- /dev/null +++ b/AndroidAnnotations/functional-test-1-5-tests/src/test/resources/org.robolectric.Config.properties @@ -0,0 +1,17 @@ +# +# Copyright (C) 2010-2014 eBusiness Information, Excilys Group +# +# Licensed under the Apache License, Version 2.0 (the "License"); you may not +# use this file except in compliance with the License. You may obtain a copy of +# the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed To in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations under +# the License. +# + +manifest: ../functional-test-1-5/AndroidManifest.xml \ No newline at end of file diff --git a/AndroidAnnotations/functional-test-1-5/pom.xml b/AndroidAnnotations/functional-test-1-5/pom.xml index a5334fcf41..6af26bcf30 100644 --- a/AndroidAnnotations/functional-test-1-5/pom.xml +++ b/AndroidAnnotations/functional-test-1-5/pom.xml @@ -14,7 +14,7 @@ 1.0.0.RELEASE - 1.7.2 + 1.9.6 2.4.1 1.0.0-r2 @@ -44,7 +44,7 @@ org.roboguice roboguice - 1.1.2 + 2.0 com.j256.ormlite diff --git a/AndroidAnnotations/functional-test-1-5/src/main/java/org/androidannotations/test15/CustomTitleActivity.java b/AndroidAnnotations/functional-test-1-5/src/main/java/org/androidannotations/test15/CustomTitleActivity.java index 4a70dd5bff..45b8788776 100644 --- a/AndroidAnnotations/functional-test-1-5/src/main/java/org/androidannotations/test15/CustomTitleActivity.java +++ b/AndroidAnnotations/functional-test-1-5/src/main/java/org/androidannotations/test15/CustomTitleActivity.java @@ -1,26 +1,26 @@ -/** - * Copyright (C) 2010-2014 eBusiness Information, Excilys Group - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not - * use this file except in compliance with the License. You may obtain a copy of - * the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed To in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations under - * the License. - */ -package org.androidannotations.test15; - -import org.androidannotations.annotations.CustomTitle; -import org.androidannotations.annotations.EActivity; - -import android.app.Activity; - -@EActivity -@CustomTitle(R.layout.component) -public class CustomTitleActivity extends Activity { -} +/** + * Copyright (C) 2010-2014 eBusiness Information, Excilys Group + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy of + * the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed To in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations under + * the License. + */ +package org.androidannotations.test15; + +import org.androidannotations.annotations.CustomTitle; +import org.androidannotations.annotations.EActivity; + +import android.app.Activity; + +@EActivity +@CustomTitle(R.layout.component) +public class CustomTitleActivity extends Activity { +} diff --git a/AndroidAnnotations/functional-test-1-5/src/main/java/org/androidannotations/test15/ItemClicksHandledActivity.java b/AndroidAnnotations/functional-test-1-5/src/main/java/org/androidannotations/test15/ItemClicksHandledActivity.java index c39570cb4b..232a5594e7 100644 --- a/AndroidAnnotations/functional-test-1-5/src/main/java/org/androidannotations/test15/ItemClicksHandledActivity.java +++ b/AndroidAnnotations/functional-test-1-5/src/main/java/org/androidannotations/test15/ItemClicksHandledActivity.java @@ -114,13 +114,13 @@ protected void listViewWithArgumentWithGenericWildcardType(ArrayList item) { listViewParametrizedItemClicked = true; } - @ItemClick - public void spinner() { + @ItemSelect + public void spinner(boolean selected, int position) { spinnerItemClicked = true; } - @ItemClick - public void spinnerWithArgument(String selectedItem) { + @ItemSelect + public void spinnerWithArgument(boolean selected, String selectedItem) { spinnerWithArgumentSelectedItem = selectedItem; } diff --git a/AndroidAnnotations/functional-test-1-5/src/main/java/org/androidannotations/test15/rest/EBeanConverter.java b/AndroidAnnotations/functional-test-1-5/src/main/java/org/androidannotations/test15/rest/EBeanConverter.java index db134d8b7c..5693f7fa5b 100644 --- a/AndroidAnnotations/functional-test-1-5/src/main/java/org/androidannotations/test15/rest/EBeanConverter.java +++ b/AndroidAnnotations/functional-test-1-5/src/main/java/org/androidannotations/test15/rest/EBeanConverter.java @@ -1,5 +1,5 @@ /** - * Copyright (C) 2010-2013 eBusiness Information, Excilys Group + * Copyright (C) 2010-2014 eBusiness Information, Excilys Group * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of diff --git a/AndroidAnnotations/functional-test-1-5/src/main/java/org/androidannotations/test15/rest/EBeanInterceptor.java b/AndroidAnnotations/functional-test-1-5/src/main/java/org/androidannotations/test15/rest/EBeanInterceptor.java index 9e63e64a4b..51f648b2bf 100644 --- a/AndroidAnnotations/functional-test-1-5/src/main/java/org/androidannotations/test15/rest/EBeanInterceptor.java +++ b/AndroidAnnotations/functional-test-1-5/src/main/java/org/androidannotations/test15/rest/EBeanInterceptor.java @@ -1,5 +1,5 @@ /** - * Copyright (C) 2010-2013 eBusiness Information, Excilys Group + * Copyright (C) 2010-2014 eBusiness Information, Excilys Group * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of diff --git a/AndroidAnnotations/functional-test-1-5/src/main/java/org/androidannotations/test15/rest/MyRequestFactory.java b/AndroidAnnotations/functional-test-1-5/src/main/java/org/androidannotations/test15/rest/MyRequestFactory.java index d8ffd3059c..cd525f3bf9 100644 --- a/AndroidAnnotations/functional-test-1-5/src/main/java/org/androidannotations/test15/rest/MyRequestFactory.java +++ b/AndroidAnnotations/functional-test-1-5/src/main/java/org/androidannotations/test15/rest/MyRequestFactory.java @@ -1,5 +1,5 @@ /** - * Copyright (C) 2010-2013 eBusiness Information, Excilys Group + * Copyright (C) 2010-2014 eBusiness Information, Excilys Group * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of diff --git a/AndroidAnnotations/functional-test-1-5/src/main/java/org/androidannotations/test15/roboguice/ActivityWithRoboGuice.java b/AndroidAnnotations/functional-test-1-5/src/main/java/org/androidannotations/test15/roboguice/ActivityWithRoboGuice.java index e67d8fa307..9ce4685070 100644 --- a/AndroidAnnotations/functional-test-1-5/src/main/java/org/androidannotations/test15/roboguice/ActivityWithRoboGuice.java +++ b/AndroidAnnotations/functional-test-1-5/src/main/java/org/androidannotations/test15/roboguice/ActivityWithRoboGuice.java @@ -19,12 +19,14 @@ import java.util.Date; import java.util.Locale; +import roboguice.activity.RoboActivity; import roboguice.inject.InjectResource; import roboguice.inject.InjectView; import android.app.Activity; import android.widget.TextView; import com.google.inject.Inject; + import org.androidannotations.annotations.AfterViews; import org.androidannotations.annotations.EActivity; import org.androidannotations.annotations.RoboGuice; @@ -33,9 +35,9 @@ /** * Adapted from http://pivotal.github.com/robolectric/roboguice.html */ -@RoboGuice +//@RoboGuice @EActivity(R.layout.injected) -public class ActivityWithRoboGuice extends Activity { +public class ActivityWithRoboGuice extends RoboActivity { @InjectResource(R.string.injected_activity_caption) String caption; diff --git a/AndroidAnnotations/functional-test-1-5/src/main/java/org/androidannotations/test15/roboguice/MapActivityWithRoboGuice.java b/AndroidAnnotations/functional-test-1-5/src/main/java/org/androidannotations/test15/roboguice/MapActivityWithRoboGuice.java index 2ac1cc29fa..ccfb182e64 100644 --- a/AndroidAnnotations/functional-test-1-5/src/main/java/org/androidannotations/test15/roboguice/MapActivityWithRoboGuice.java +++ b/AndroidAnnotations/functional-test-1-5/src/main/java/org/androidannotations/test15/roboguice/MapActivityWithRoboGuice.java @@ -20,10 +20,12 @@ import org.androidannotations.annotations.EActivity; import org.androidannotations.annotations.RoboGuice; +import roboguice.activity.RoboActivity; +import roboguice.activity.RoboMapActivity; + //Commented because Maps is not Open Source -@RoboGuice @EActivity -public class MapActivityWithRoboGuice extends Activity { // MapActivity { +public class MapActivityWithRoboGuice extends RoboActivity { // MapActivity { // @Override protected boolean isRouteDisplayed() { diff --git a/AndroidAnnotations/functional-test-1-5/src/main/java/org/androidannotations/test15/roboguice/RobolectricSampleModule.java b/AndroidAnnotations/functional-test-1-5/src/main/java/org/androidannotations/test15/roboguice/RobolectricSampleModule.java index 4e1925a8c5..b4438ba038 100644 --- a/AndroidAnnotations/functional-test-1-5/src/main/java/org/androidannotations/test15/roboguice/RobolectricSampleModule.java +++ b/AndroidAnnotations/functional-test-1-5/src/main/java/org/androidannotations/test15/roboguice/RobolectricSampleModule.java @@ -15,9 +15,10 @@ */ package org.androidannotations.test15.roboguice; -import roboguice.config.AbstractAndroidModule; +import com.google.inject.AbstractModule; -public class RobolectricSampleModule extends AbstractAndroidModule { + +public class RobolectricSampleModule extends AbstractModule { @Override protected void configure() { diff --git a/AndroidAnnotations/functional-test-1-5/src/main/java/org/androidannotations/test15/roboguice/SampleRoboApplication.java b/AndroidAnnotations/functional-test-1-5/src/main/java/org/androidannotations/test15/roboguice/SampleRoboApplication.java index aca12d0344..a9003b8513 100644 --- a/AndroidAnnotations/functional-test-1-5/src/main/java/org/androidannotations/test15/roboguice/SampleRoboApplication.java +++ b/AndroidAnnotations/functional-test-1-5/src/main/java/org/androidannotations/test15/roboguice/SampleRoboApplication.java @@ -15,11 +15,6 @@ */ package org.androidannotations.test15.roboguice; -import java.util.List; - -import roboguice.application.RoboApplication; - -import com.google.inject.Module; import org.androidannotations.annotations.Bean; import org.androidannotations.annotations.EApplication; import org.androidannotations.annotations.OrmLiteDao; @@ -28,8 +23,10 @@ import org.androidannotations.test15.ormlite.User; import org.androidannotations.test15.ormlite.UserDao; +import android.app.Application; + @EApplication -public class SampleRoboApplication extends RoboApplication { +public class SampleRoboApplication extends Application { @Bean public EmptyDependency someDependency; @@ -37,14 +34,4 @@ public class SampleRoboApplication extends RoboApplication { @OrmLiteDao(helper = DatabaseHelper.class, model = User.class) UserDao userDao; - private Module module = new RobolectricSampleModule(); - - @Override - protected void addApplicationModules(List modules) { - modules.add(module); - } - - public void setModule(Module module) { - this.module = module; - } } From 12750f9678f23b168290edc4aeb4bed89731d2d3 Mon Sep 17 00:00:00 2001 From: WonderCsabo Date: Tue, 13 May 2014 15:37:44 +0200 Subject: [PATCH 2/4] Fix ClassLoader issues with ParameterizedRobolectricTestRunner The ParameterizedRobolectricTestRunner has a problem: when creating the test parameter objects, it uses the default ClassLoader, but for the tests it uses the Robolectric ClassLoader. This results in errors since objects cannot be used altogether which are originating from different ClassLoaders. This commit fixes this issue by creating a workaround class which loads Robolectric with a fake test, aquire the Robolectric ClassLoader and creates the test parameter objects with that. --- ...nstanceStateActivityParameterizedTest.java | 4 +- ...erizedRobolectricTestRunnerWorkaround.java | 74 +++++++++++++++++++ 2 files changed, 76 insertions(+), 2 deletions(-) create mode 100644 AndroidAnnotations/functional-test-1-5-tests/src/test/java/org/robolectric/ParameterizedRobolectricTestRunnerWorkaround.java diff --git a/AndroidAnnotations/functional-test-1-5-tests/src/test/java/org/androidannotations/test15/instancestate/SaveInstanceStateActivityParameterizedTest.java b/AndroidAnnotations/functional-test-1-5-tests/src/test/java/org/androidannotations/test15/instancestate/SaveInstanceStateActivityParameterizedTest.java index 4e8523de2c..3147948bd0 100644 --- a/AndroidAnnotations/functional-test-1-5-tests/src/test/java/org/androidannotations/test15/instancestate/SaveInstanceStateActivityParameterizedTest.java +++ b/AndroidAnnotations/functional-test-1-5-tests/src/test/java/org/androidannotations/test15/instancestate/SaveInstanceStateActivityParameterizedTest.java @@ -25,13 +25,13 @@ import org.fest.util.Lists; import org.junit.Test; import org.junit.runner.RunWith; -import org.robolectric.ParameterizedRobolectricTestRunner; +import org.robolectric.ParameterizedRobolectricTestRunnerWorkaround; import org.robolectric.ParameterizedRobolectricTestRunner.Parameters; import org.robolectric.Robolectric; import android.os.Bundle; -@RunWith(ParameterizedRobolectricTestRunner.class) +@RunWith(ParameterizedRobolectricTestRunnerWorkaround.class) public class SaveInstanceStateActivityParameterizedTest { @Parameters(name = "{0}") diff --git a/AndroidAnnotations/functional-test-1-5-tests/src/test/java/org/robolectric/ParameterizedRobolectricTestRunnerWorkaround.java b/AndroidAnnotations/functional-test-1-5-tests/src/test/java/org/robolectric/ParameterizedRobolectricTestRunnerWorkaround.java new file mode 100644 index 0000000000..b710e9505c --- /dev/null +++ b/AndroidAnnotations/functional-test-1-5-tests/src/test/java/org/robolectric/ParameterizedRobolectricTestRunnerWorkaround.java @@ -0,0 +1,74 @@ +package org.robolectric; + +import java.lang.reflect.Constructor; +import java.lang.reflect.Field; +import java.lang.reflect.Method; +import java.util.Collections; +import java.util.List; + +import org.junit.Test; +import org.junit.runner.Runner; +import org.junit.runners.Suite; +import org.robolectric.annotation.Config; +import org.robolectric.util.AnnotationUtil; + +public class ParameterizedRobolectricTestRunnerWorkaround extends Suite { + + private Object delegate; // ParameterizedRobolectricTestRunner + private Class runnerClass; // ParameterizedRobolectricTestRunner.class + private Field lastTestRunnerClassField; // RobolectricTestRunner.lastTestRunnerClass + private Class testRunnerClass; // ParameterizedRobolectricTestRunner$TestClassRunnerForParameters.class + private RobolectricTestRunner testrunner; + + public ParameterizedRobolectricTestRunnerWorkaround(Class klass) throws Throwable { + super(klass, Collections.emptyList()); + + testrunner = new RobolectricTestRunner(FakeTestClass.class); + + Config config = AnnotationUtil.defaultsFor(Config.class); + + Config globalConfig = Config.Implementation.fromProperties(testrunner.getConfigProperties()); + if (globalConfig != null) { + config = new Config.Implementation(config, globalConfig); + } + + AndroidManifest manifest = testrunner.getAppManifest(config); + Method getEnvironmentMethod = RobolectricTestRunner.class.getDeclaredMethod("getEnvironment", AndroidManifest.class, Config.class); + getEnvironmentMethod.setAccessible(true); + SdkEnvironment environment = (SdkEnvironment) getEnvironmentMethod.invoke(testrunner, manifest, config); + + runnerClass = environment.getRobolectricClassLoader().loadClass(ParameterizedRobolectricTestRunner.class.getName()); + testRunnerClass = environment.getRobolectricClassLoader().loadClass(runnerClass.getName() + "$TestClassRunnerForParameters"); + + lastTestRunnerClassField = RobolectricTestRunner.class.getDeclaredField("lastTestRunnerClass"); + lastTestRunnerClassField.setAccessible(true); + + lastTestRunnerClassField.set(testrunner, testRunnerClass); + + Constructor constructor = runnerClass.getConstructor(Class.class); + delegate = constructor.newInstance(environment.getRobolectricClassLoader().loadClass(klass.getName())); + } + + @SuppressWarnings("unchecked") + @Override + protected List getChildren() { + try { + lastTestRunnerClassField.set(testrunner, testRunnerClass); + + Method getChildrenMethod = runnerClass.getDeclaredMethod("getChildren"); + getChildrenMethod.setAccessible(true); + return (List) getChildrenMethod.invoke(delegate); + } catch (ReflectiveOperationException e) { + throw new RuntimeException(e); + } catch (SecurityException e) { + throw new RuntimeException(e); + } + } + + public static class FakeTestClass { + + @Test + public void test() {} + } + +} From a6efac116e211eebe34d1bb8dee6dc4fe78175a5 Mon Sep 17 00:00:00 2001 From: WonderCsabo Date: Wed, 14 May 2014 17:20:49 +0200 Subject: [PATCH 3/4] Re-add @RoboGuice testing --- .../test15/roboguice/ActivityWithRoboGuice.java | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/AndroidAnnotations/functional-test-1-5/src/main/java/org/androidannotations/test15/roboguice/ActivityWithRoboGuice.java b/AndroidAnnotations/functional-test-1-5/src/main/java/org/androidannotations/test15/roboguice/ActivityWithRoboGuice.java index 9ce4685070..61de00657a 100644 --- a/AndroidAnnotations/functional-test-1-5/src/main/java/org/androidannotations/test15/roboguice/ActivityWithRoboGuice.java +++ b/AndroidAnnotations/functional-test-1-5/src/main/java/org/androidannotations/test15/roboguice/ActivityWithRoboGuice.java @@ -19,7 +19,6 @@ import java.util.Date; import java.util.Locale; -import roboguice.activity.RoboActivity; import roboguice.inject.InjectResource; import roboguice.inject.InjectView; import android.app.Activity; @@ -35,9 +34,9 @@ /** * Adapted from http://pivotal.github.com/robolectric/roboguice.html */ -//@RoboGuice +@RoboGuice @EActivity(R.layout.injected) -public class ActivityWithRoboGuice extends RoboActivity { +public class ActivityWithRoboGuice extends Activity { @InjectResource(R.string.injected_activity_caption) String caption; From 412b7bf8371e247583e9b2d316e042f179304bdd Mon Sep 17 00:00:00 2001 From: WonderCsabo Date: Tue, 27 May 2014 13:47:15 +0200 Subject: [PATCH 4/4] Updated to Robolectric 2.3 Robolectric 2.3 was just released, so this commit upgrades to the latest version. Since Robolectric only works with API level 16 and up, the test app project and the test project now uses that. --- .../functional-test-1-5-tests/pom.xml | 15 +++- ...erizedRobolectricTestRunnerWorkaround.java | 90 +++++++++++-------- .../functional-test-1-5/.factorypath | 6 +- .../functional-test-1-5/AndroidManifest.xml | 8 +- .../functional-test-1-5/lint.xml | 3 + .../functional-test-1-5/pom.xml | 14 +-- .../functional-test-1-5/project.properties | 2 +- 7 files changed, 86 insertions(+), 52 deletions(-) diff --git a/AndroidAnnotations/functional-test-1-5-tests/pom.xml b/AndroidAnnotations/functional-test-1-5-tests/pom.xml index eea69dcfa1..428648d5a2 100644 --- a/AndroidAnnotations/functional-test-1-5-tests/pom.xml +++ b/AndroidAnnotations/functional-test-1-5-tests/pom.xml @@ -23,11 +23,24 @@ 4.0.1.2 test + + com.google.android + support-v4 + r7 + test + org.robolectric robolectric - 2.2 + 2.3 test + + + + com.android.support + support-v4 + + org.easytesting diff --git a/AndroidAnnotations/functional-test-1-5-tests/src/test/java/org/robolectric/ParameterizedRobolectricTestRunnerWorkaround.java b/AndroidAnnotations/functional-test-1-5-tests/src/test/java/org/robolectric/ParameterizedRobolectricTestRunnerWorkaround.java index 90deaa4152..e68b62200a 100644 --- a/AndroidAnnotations/functional-test-1-5-tests/src/test/java/org/robolectric/ParameterizedRobolectricTestRunnerWorkaround.java +++ b/AndroidAnnotations/functional-test-1-5-tests/src/test/java/org/robolectric/ParameterizedRobolectricTestRunnerWorkaround.java @@ -1,74 +1,90 @@ package org.robolectric; -import java.lang.reflect.Constructor; import java.lang.reflect.Field; -import java.lang.reflect.Method; import java.util.Collections; import java.util.List; +import java.util.Map; -import org.junit.Test; +import org.fest.reflect.reference.TypeRef; import org.junit.runner.Runner; import org.junit.runners.Suite; +import org.junit.runners.model.InitializationError; import org.robolectric.annotation.Config; -import org.robolectric.util.AnnotationUtil; + +import static org.fest.reflect.core.Reflection.*; public class ParameterizedRobolectricTestRunnerWorkaround extends Suite { private Object delegate; // ParameterizedRobolectricTestRunner private Class runnerClass; // ParameterizedRobolectricTestRunner.class - private Field lastTestRunnerClassField; // RobolectricTestRunner.lastTestRunnerClass private Class testRunnerClass; // ParameterizedRobolectricTestRunner$TestClassRunnerForParameters.class private RobolectricTestRunner testrunner; + private List runners; // delegate.getChildren() public ParameterizedRobolectricTestRunnerWorkaround(Class klass) throws Throwable { super(klass, Collections.emptyList()); - testrunner = new RobolectricTestRunner(FakeTestClass.class); + testrunner = new ClassLoaderCreatorRobolectricTestRunner(klass); - Config config = AnnotationUtil.defaultsFor(Config.class); - - Config globalConfig = Config.Implementation.fromProperties(testrunner.getConfigProperties()); - if (globalConfig != null) { - config = new Config.Implementation(config, globalConfig); - } + Config config = testrunner.getConfig(klass.getMethods()[0]); AndroidManifest manifest = testrunner.getAppManifest(config); - Method getEnvironmentMethod = RobolectricTestRunner.class.getDeclaredMethod("getEnvironment", AndroidManifest.class, Config.class); - getEnvironmentMethod.setAccessible(true); - SdkEnvironment environment = (SdkEnvironment) getEnvironmentMethod.invoke(testrunner, manifest, config); + SdkEnvironment environment = method("getEnvironment") + .withReturnType(SdkEnvironment.class).withParameterTypes(AndroidManifest.class, Config.class).in(testrunner).invoke(manifest, config); - runnerClass = environment.getRobolectricClassLoader().loadClass(ParameterizedRobolectricTestRunner.class.getName()); - testRunnerClass = environment.getRobolectricClassLoader().loadClass(runnerClass.getName() + "$TestClassRunnerForParameters"); + runnerClass = type(ParameterizedRobolectricTestRunner.class.getName()).withClassLoader(environment.getRobolectricClassLoader()).load(); + testRunnerClass = type(runnerClass.getName() + "$TestClassRunnerForParameters").withClassLoader(environment.getRobolectricClassLoader()).load(); - lastTestRunnerClassField = RobolectricTestRunner.class.getDeclaredField("lastTestRunnerClass"); + Field lastTestRunnerClassField = field("lastTestRunnerClass").ofType(Class.class).in(RobolectricTestRunner.class).info(); lastTestRunnerClassField.setAccessible(true); - lastTestRunnerClassField.set(testrunner, testRunnerClass); - Constructor constructor = runnerClass.getConstructor(Class.class); - delegate = constructor.newInstance(environment.getRobolectricClassLoader().loadClass(klass.getName())); + delegate = constructor().withParameterTypes(Class.class).in(runnerClass) + .newInstance(type(klass.getName()).withClassLoader(environment.getRobolectricClassLoader()).load()); + + Field lastSdkEnvironmentField = field("lastSdkEnvironment").ofType(SdkEnvironment.class).in(RobolectricTestRunner.class).info(); + lastSdkEnvironmentField.setAccessible(true); + + Field lastSdkConfigField = field("lastSdkConfig").ofType(SdkConfig.class).in(RobolectricTestRunner.class).info(); + lastSdkConfigField.setAccessible(true); + + runners = method("getChildren").withReturnType(new TypeRef>() {}) .in(delegate).invoke(); + + for (Runner runner : runners) { + lastTestRunnerClassField.set(runner, testRunnerClass); + lastSdkEnvironmentField.set(runner, environment); + lastSdkConfigField.set(runner, environment.getSdkConfig()); + } } - @SuppressWarnings("unchecked") @Override protected List getChildren() { - try { - lastTestRunnerClassField.set(testrunner, testRunnerClass); - - Method getChildrenMethod = runnerClass.getDeclaredMethod("getChildren"); - getChildrenMethod.setAccessible(true); - return (List) getChildrenMethod.invoke(delegate); - } catch (ReflectiveOperationException e) { - throw new RuntimeException(e); - } catch (SecurityException e) { - throw new RuntimeException(e); - } + return runners; } - public static class FakeTestClass { + private static class ClassLoaderCreatorRobolectricTestRunner extends RobolectricTestRunner { + + public ClassLoaderCreatorRobolectricTestRunner(Class testClass) + throws InitializationError, IllegalArgumentException, IllegalAccessException { + super(testClass); + + Map, EnvHolder> envHoldersByTestRunner = + field("envHoldersByTestRunner").ofType(new TypeRef, EnvHolder>>() {}).in(this).get(); + + EnvHolder envHolder = envHoldersByTestRunner.get(RobolectricTestRunner.class); + + if (envHolder != null) { + Field envHolderField = field("envHolder").ofType(EnvHolder.class).in(RobolectricTestRunner.class).info(); + envHolderField.setAccessible(true); + envHolderField.set(this, envHolder); + } else { + envHoldersByTestRunner.put(RobolectricTestRunner.class, envHolder); + } + } - @Test - public void test() {} + @Override + protected void validateConstructor(List errors) { + validateOnlyOneConstructor(errors); + } } - } diff --git a/AndroidAnnotations/functional-test-1-5/.factorypath b/AndroidAnnotations/functional-test-1-5/.factorypath index 221a122641..8ea37cb6c8 100644 --- a/AndroidAnnotations/functional-test-1-5/.factorypath +++ b/AndroidAnnotations/functional-test-1-5/.factorypath @@ -2,7 +2,7 @@ - + @@ -11,13 +11,15 @@ - + + + diff --git a/AndroidAnnotations/functional-test-1-5/AndroidManifest.xml b/AndroidAnnotations/functional-test-1-5/AndroidManifest.xml index d85ee653c6..6a930eda90 100644 --- a/AndroidAnnotations/functional-test-1-5/AndroidManifest.xml +++ b/AndroidAnnotations/functional-test-1-5/AndroidManifest.xml @@ -19,19 +19,19 @@ + android:versionName="2.1-SNAPSHOT" xmlns:tools="http://schemas.android.com/tools"> + android:targetSdkVersion="16" tools:ignore="OldTargetApi"/> + android:label="@string/app_name" + android:debuggable="true" > diff --git a/AndroidAnnotations/functional-test-1-5/lint.xml b/AndroidAnnotations/functional-test-1-5/lint.xml index 5b09fe9705..ffbe614c0b 100644 --- a/AndroidAnnotations/functional-test-1-5/lint.xml +++ b/AndroidAnnotations/functional-test-1-5/lint.xml @@ -17,5 +17,8 @@ --> + + + \ No newline at end of file diff --git a/AndroidAnnotations/functional-test-1-5/pom.xml b/AndroidAnnotations/functional-test-1-5/pom.xml index 38f5b31ed9..86e8e9164b 100644 --- a/AndroidAnnotations/functional-test-1-5/pom.xml +++ b/AndroidAnnotations/functional-test-1-5/pom.xml @@ -32,13 +32,13 @@ com.google.android android - 4.0.1.2 + 4.1.1.4 provided com.google.android android-test - 4.0.1.2 + 4.1.1.4 provided @@ -89,11 +89,11 @@ - - com.google.android - support-v4 - r7 - + + com.google.android + support-v4 + r7 + diff --git a/AndroidAnnotations/functional-test-1-5/project.properties b/AndroidAnnotations/functional-test-1-5/project.properties index 730e911f2f..895c9ce2eb 100644 --- a/AndroidAnnotations/functional-test-1-5/project.properties +++ b/AndroidAnnotations/functional-test-1-5/project.properties @@ -8,4 +8,4 @@ # project structure. # Project target. -target=android-14 +target=android-16