I have a problem executing android unit tests against android
applications that utilize the recently released Fragment support API.
When the test is run against a FragmentActivity the following error
shows up in the log and the class fails to load. When run against an
identical class, but one derived from Activity the test works fine.
Both classes work correctly as apps! Meaning that when simply invoked
they both display their layout and function correctly. The support jar
is part of the build path and included in the project.

The problem I have is that the only way to utilize fragments (and
support pre3.0 android) is to utilize FragmentActivity, but if that
excludes automated testing then what good is this library.

4-05 18:00:11.276: WARN/dalvikvm(1095): Class resolved by unexpected
DEX: Lcom/example/android/app/FragmentLayoutSupport;(0x406351a0):
0x12e5c8 ref [Landroid/support/v4/app/FragmentActivity;] Landroid/
support/v4/app/FragmentActivity;(0x406351a0):0x12e440
04-05 18:00:11.276: WARN/dalvikvm(1095): (Lcom/example/android/app/
FragmentLayoutSupport; had used a different Landroid/support/v4/app/
FragmentActivity; during pre-verification)
04-05 18:00:11.286: WARN/dalvikvm(1095): Unable to resolve superclass
of Lcom/example/android/app/FragmentLayoutSupport; (49)
04-05 18:00:11.286: WARN/dalvikvm(1095): Link of class 'Lcom/example/
android/app/FragmentLayoutSupport;' failed
04-05 18:00:11.286: ERROR/dalvikvm(1095): Could not find class
'com.example.android.app.FragmentLayoutSupport', referenced from
method com.example.android.app.test.FrameLayoutTest.<init>
04-05 18:00:11.286: WARN/dalvikvm(1095): VFY: unable to resolve const-
class 131 (Lcom/example/android/app/FragmentLayoutSupport;) in Lcom/
example/android/app/test/FrameLayoutTest;

Here is the code I constructed to demonstrate the issue. The test case
simply tries to instantiate the class under test:

FrameLayoutTest.java
/*
  *This test case uses  ActivityInstrumentationTestCase2, but I've
also duplicated this failure
 * with ServiceTestCase while attempting to test a working service in
my app.
*/
public class FrameLayoutTest extends
            ActivityInstrumentationTestCase2<FragmentLayoutSupport> {
        public FrameLayoutTest() {
            super(FragmentLayoutSupport.class);
        }

    public void testActivityTestCaseSetUpProperly() {
        assertNotNull("activity should be launched successfully",
getActivity());
    }
}

The two classes I have created are as follows and fragment_layout is
an empty LinearLayout:

FrameLayout.java
public class FragmentLayout extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.fragment_layout);
    }
}

And

FragmentLayoutSupport.java
public class FragmentLayoutSupport extends FragmentActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.fragment_layout);
    }

-- 
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en

Reply via email to