java如何将参数传递给安卓 junit测试(参数化测试)
我正在使用命令行或eclipse运行我的安卓 junit测试,这取决于我是在开发模式下还是在设备测试中
java应用程序有一个Main(String[]args)方法,可以很容易地将参数传递给它(在运行配置部分的Arguments选项卡中使用eclipse,或者通过命令行)
对于安卓 junit测试则不同,它没有主方法,也没有我可以设置一些参数的地方
我已经读过这里和那里的解决方案将是使用属性文件。这是唯一的办法吗? 如果你有一个简单快捷的例子,我将不胜感激
谢谢
>>> Edit <<<
我使用的是Robotium,junit扩展了ActivityInstrumentationTestCase2 请参见下面非常基本的junit测试:
import 安卓.test.ActivityInstrumentationTestCase2;
import 安卓.util.Log;
import com.jayway.安卓.robotium.solo.Solo;
public class Test_arg extends ActivityInstrumentationTestCase2 {
private static final String TARGET_PACKAGE_ID = "com.myapp.test";
private static final String LAUNCHER_ACTIVITY_FULL_CLASSNAME = "com.myapp";
private static Class launcherActivityClass;
private Solo solo;
static {
try {
launcherActivityClass = Class.forName(LAUNCHER_ACTIVITY_FULL_CLASSNAME);
} catch (ClassNotFoundException e) {
throw new RuntimeException(e);
}
}
public Test_arg() throws ClassNotFoundException {
super(TARGET_PACKAGE_ID, launcherActivityClass);
}
@Override
protected void setUp() throws Exception {
solo = new Solo(getInstrumentation(), getActivity());
}
@Override
public void tearDown() throws Exception {
try {
solo.finishOpenedActivities();
solo.finalize();
} catch (Throwable e) {
e.printStackTrace();
}
super.tearDown();
}
public void test_01() throws InterruptedException {
Log.i("TEST", "test");
}
}
还有安卓清单
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:安卓="http://schemas.安卓.com/apk/res/安卓"
package="com.myapp.test"
安卓:versionCode="1"
安卓:versionName="1.0" >
<uses-sdk 安卓:minSdkVersion="5" />
<instrumentation
安卓:name="安卓.test.InstrumentationTestRunner"
安卓:targetPackage="com.slacker.radio" 安卓:functionalTest="true"/>
<application
安卓:icon="@drawable/ic_launcher"
安卓:label="@string/app_name" >
<uses-library 安卓:name="安卓.test.runner" />
</application>
</manifest>
# 1 楼答案
您可以扩展InstrumentationTestRunner并在onCreate中获取参数:
在您的情况下,将插装添加到
AndroidManifest.xml
:在你的测试中(即^{)你可以这样做:
并获取可以在命令行中指定为
# 2 楼答案
在扩展ActivityInstrumentationTestCase2的类的Setup函数中,添加以下代码:
目录结构应为:
然后在AndroidManifest中。xml,set
使用命令行调用上述包: