我是 Android 应用程序测试的新手。我使用 java 代码创建了一个自动化框架。然后我尝试将该框架与现有的 Robotium Test App 集成。但是当我给Run as
-->Android Junit
时,测试应用程序已成功安装,但会引发异常Exception during Suite construction.
--我有两个java类——例如Class1_Functional
库和Class2_Automation
框架。我在Class2_Automation Framework
Robotium 框架内创建了一个类的对象,因此我可以调用在类中声明的函数,我猜想会触发异常。
下面的代码显示了我的 Robotium 框架
package jp.list.app.test;
import java.io.IOException;
import java.util.Arrays;
import android.app.Activity;
import com.jayway.android.robotium.solo.Solo;
import android.test.ActivityInstrumentationTestCase2;
import android.util.Log;
import jp.list.app.test.Automation_Framework;
@SuppressWarnings("unchecked")
public class TestLogin1 extends ActivityInstrumentationTestCase2
{
/////////////////
//Created the object of the class Automation framework where the exception occurs
////////////////
private Automation_Framework autoobj = new Automation_Framework();
private static final
String TARGET_PACKAGE_ID = "jp.list.app";
private static final
String LAUNCHER_ACTIVITY_FULL_CLASSNAME ="jp.list.app.JPActivity";
//Parameters used for the Automation Framework
String excel_path ="/mnt/sdcard/Automation_Framework_Robotium.xls";
// String excel_path ="C:\\Automation_Framework\\Automation_Framework_Robotium.xls";
String screenshot_path ="/mnt/sdcard/Screenshots";
// String screenshot_path = "C:\\Automation_Framework\\Screenshots";
String excelsheet_flow ="Execution_Flow";
String excelsheet_data ="Data";
int stepidindex_flow = 2 ;
int tobeexctdindex_flow = 3;
int funtionflowindex_flow = 6;
int statusindex_flow = 7;
int executioncommentsindex_flow = 8;
int stepidindex_data = 0;
int funtionnameindex_data = 1;
int dataindex_data = 2;
int elementidindex_data = 3;
private static Class<?>launcherActivityClass;
static{
try
{
launcherActivityClass = Class.forName(LAUNCHER_ACTIVITY_FULL_CLASSNAME);
}
catch(ClassNotFoundException e)
{
throw new
RuntimeException(e);
}
}
@SuppressWarnings({ "unchecked", "deprecation" })
public TestLogin1() throws ClassNotFoundException
{
super(TARGET_PACKAGE_ID,launcherActivityClass);
}
private Solo solo;
private Activity activity;
@Override
protected void setUp()throws Exception
{
super.setUp();
this.activity=this.getActivity();
this.solo = new Solo(getInstrumentation(),this.activity);
}
public void test_framework()
{
try {
autoobj.driver_function(excel_path, screenshot_path, excelsheet_flow, stepidindex_flow, tobeexctdindex_flow, funtionflowindex_flow, statusindex_flow, executioncommentsindex_flow, excelsheet_data, stepidindex_data, funtionnameindex_data, dataindex_data, elementidindex_data);
} catch (IOException e) {
Log.v("output", e.toString());
e.printStackTrace();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
@Override
public void tearDown()throws Exception
{
try
{
solo.finalize();
}
catch(Throwable e)
{
e.printStackTrace();
}
getActivity().finish();
super.tearDown();
}
}
我的 logcat 输出给出了
----- begin exception -----
java.lang.RuntimeException: Exception during suite construction
at android.test.suitebuilder.TestSuiteBuilder$FailedToCreateTests.testSuiteConstructionFailed(TestSuiteBuilder.java:238)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at junit.framework.TestCase.runTest(TestCase.java:168)
at junit.framework.TestCase.runBare(TestCase.java:134)
at junit.framework.TestResult$1.protect(TestResult.java:115)
at junit.framework.TestResult.runProtected(TestResult.java:133)
at junit.framework.TestResult.run(TestResult.java:118)
at junit.framework.TestCase.run(TestCase.java:124)
at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:190)
at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:175)
at android.test.InstrumentationTestRunner.onStart(InstrumentationTestRunner.java:555)
at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1584)
Caused by: java.lang.reflect.InvocationTargetException
at java.lang.reflect.Constructor.constructNative(Native Method)
at java.lang.reflect.Constructor.newInstance(Constructor.java:417)
at android.test.suitebuilder.TestMethod.instantiateTest(TestMethod.java:87)
at android.test.suitebuilder.TestMethod.createTest(TestMethod.java:73)
at android.test.suitebuilder.TestSuiteBuilder.addTest(TestSuiteBuilder.java:262)
at android.test.suitebuilder.TestSuiteBuilder.build(TestSuiteBuilder.java:184)
at android.test.InstrumentationTestRunner.onCreate(InstrumentationTestRunner.java:379)
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4142)
at android.app.ActivityThread.access$1300(ActivityThread.java:130)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1255)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4745)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.VerifyError: jp/list/app/test/Function_Lib_Robotium
at jp.list.app.test.Automation_Framework.<init>(Automation_Framework.java:37)
at jp.list.app.test.TestLogin1.<init>(TestLogin1.java:15)
... 18 more
----- end exception -----
君特异常:
java.lang.RuntimeException: Exception during suite construction
at android.test.suitebuilder.TestSuiteBuilder$FailedToCreateTests.testSuiteConstructionFailed(TestSuiteBuilder.java:238)
at java.lang.reflect.Method.invokeNative(Native Method)
at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:190)
at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:175)
at android.test.InstrumentationTestRunner.onStart(InstrumentationTestRunner.java:555)
at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1584)
Caused by: java.lang.reflect.InvocationTargetException
at java.lang.reflect.Constructor.constructNative(Native Method)
at java.lang.reflect.Constructor.newInstance(Constructor.java:417)
at android.test.suitebuilder.TestMethod.instantiateTest(TestMethod.java:87)
at android.test.suitebuilder.TestMethod.createTest(TestMethod.java:73)
at android.test.suitebuilder.TestSuiteBuilder.addTest(TestSuiteBuilder.java:262)
at android.test.suitebuilder.TestSuiteBuilder.build(TestSuiteBuilder.java:184)
at android.test.InstrumentationTestRunner.onCreate(InstrumentationTestRunner.java:379)
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4142)
at android.app.ActivityThread.access$1300(ActivityThread.java:130)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1255)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4745)
at java.lang.reflect.Method.invokeNative(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.VerifyError: jp/list/app/test/Function_Lib_Robotium
at jp.list.app.test.Automation_Framework.<init>(Automation_Framework.java:37)
at jp.list.app.test.TestLogin1.<init>(TestLogin1.java:15)
... 18 more
如果有人能为我提供上述查询的解决方案,我将不胜感激。