Java Robotium测试用例作为一种方法
作为一名对java没有深入了解的技术测试人员,我有一个关于robotium和ActivityInstrumentationTestCase2的问题。我已经设法使用eclipse和robotium创建了一个测试用例。它可以工作,我可以作为junit测试执行,也可以在实际设备上从命令行执行 现在,我想将这个robotium/solo测试用例转移到我们现有的测试框架中,其中每个类/测试用例都由“abstractchecker”扩展。下面是我们的一个web测试用例的示例Java Robotium测试用例作为一种方法,java,android,eclipse,junit,robotium,Java,Android,Eclipse,Junit,Robotium,作为一名对java没有深入了解的技术测试人员,我有一个关于robotium和ActivityInstrumentationTestCase2的问题。我已经设法使用eclipse和robotium创建了一个测试用例。它可以工作,我可以作为junit测试执行,也可以在实际设备上从命令行执行 现在,我想将这个robotium/solo测试用例转移到我们现有的测试框架中,其中每个类/测试用例都由“abstractchecker”扩展。下面是我们的一个web测试用例的示例 package ipoMonit
package ipoMonitor.checkers;
import ipoMonitor.CheckInfo;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import java.sql.Connection;
import static org.junit.Assert.assertTrue;
public class EmConsoleChecker extends AbstractChecker {
public EmConsoleChecker(CheckInfo curCheck, Connection con, WebDriver driver) {
super(curCheck, con, driver);
}
@Override
public void runCheck() {
curCheck.subCheckName = "Homepage";
driver.get(curCheck.baseUrl);
assertTrue(driver.findElement(By.cssSelector("BODY")).getText()
.matches("^[\\s\\S]*Login[\\s\\S]*$"));
WriteLog(curCheck, con, " OK");
}
}
是否有可能保持这个标准,让robotium测试类作为方法而不是类运行?如果是这样,代码会是什么样子
我最初用extsolo录制的robotium测试用例如下所示
public class Test extends ActivityInstrumentationTestCase2<Activity> {
final String[] proj = {"*"};
private static final String LAUNCHER_ACTIVITY_CLASSNAME = "com.somecompany.androidsmsapp.MainActivity";
private static Class<?> launchActivityClass;
static {
try {
launchActivityClass = Class.forName(LAUNCHER_ACTIVITY_CLASSNAME);
} catch (ClassNotFoundException e) {
throw new RuntimeException(e);
}
}
private Solo solo;
@SuppressWarnings("unchecked")
public Test() {
super((Class<Activity>) launchActivityClass);
}
@Override
public void setUp() throws Exception {
solo = new Solo(getInstrumentation(), getActivity());
}
@Override
public void tearDown() throws Exception {
solo.finishOpenedActivities();
super.tearDown();
}
public void testRecorded() throws Exception {
try {
Log.i("assert", "---------------NEW RUN-------------------");
Log.i("assert", "Starting SendSMS");
solo.waitForActivity("MainActivity");
// Loads of solo commands executed here
.....
.....
} catch (AssertionFailedError e) {
throw e;
} catch (Exception e) {
throw e;
}
}
公共类测试扩展了ActivityInstrumentationTestCase2{
最后一个字符串[]proj={“*”};
私有静态最终字符串启动器\u活动\u CLASSNAME=“com.somecompany.androidsmsapp.MainActivity”;
私有静态类launchActivityClass;
静止的{
试一试{
launchActivityClass=Class.forName(启动器\活动\类名);
}catch(classnotfounde异常){
抛出新的运行时异常(e);
}
}
私人独奏;
@抑制警告(“未选中”)
公开考试(){
超级((类)启动活动类);
}
@凌驾
public void setUp()引发异常{
solo=新的solo(getInstrumentation(),getActivity());
}
@凌驾
public void tearDown()引发异常{
solo.finishOpenedActivities();
super.tearDown();
}
public void testRecorded()引发异常{
试一试{
Log.i(“assert”、“--------------新运行-----------------”;
Log.i(“断言”、“开始发送SMS”);
solo.waitForActivity(“主要活动”);
//这里执行了大量的单独命令
.....
.....
}捕获(断言失败错误e){
投掷e;
}捕获(例外e){
投掷e;
}
}
}
我注意到,在eclipse中创建robotium测试用例时,会自动添加库和类路径容器。是否有人可以分享工作示例或链接?我在网上搜索了很久,没有找到任何解决办法。感谢您的帮助
致以最良好的祝愿,
Mattias您的
抽象检查器
正在执行,您的活动工具测试用例2
正在执行
根据您提供的信息,实际上不可能将两者结合起来,即使是这样,我也不认为您会得到预期的结果。
您应该查看AbstractChecker
框架,看看您想要什么功能。将其抽象并提取到一个类中,您可以将其用作ActivityInstrumentationTestCase2
的组合
所以你不能这样做
Test扩展了AbstractChecker和ActivityInstrumentationTestCase2{
一个好的编程方法是,这样您就不会陷入这种情况,您可以编写一个检查器和测试用例
ActivityInstrumentationTestCase2
为您所做的事情已经不是什么秘密了,请看一看
如果你想考虑构词,比如:
public class Test extends ActivityInstrumentationTestCase2 { // Forced extension due to library
private final Checker checker;
public Test(){
super((Class<Activity>) launchActivityClass);
checker = SomeFactory.getChecker();
}
// do your tests and use your checker
}
公共类测试扩展ActivityInstrumentationTestCase2{//由于库的原因而强制扩展
私人最终审核人;
公开考试(){
超级((类)启动活动类);
checker=SomeFactory.getChecker();
}
//进行测试并使用检查器
}
所以我很抱歉,但我认为你的问题的答案是否定的,但希望上面有一些关键字可以帮助你进行更多的研究。