Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Robotium测试用例作为一种方法_Java_Android_Eclipse_Junit_Robotium - Fatal编程技术网

Java Robotium测试用例作为一种方法

Java Robotium测试用例作为一种方法,java,android,eclipse,junit,robotium,Java,Android,Eclipse,Junit,Robotium,作为一名对java没有深入了解的技术测试人员,我有一个关于robotium和ActivityInstrumentationTestCase2的问题。我已经设法使用eclipse和robotium创建了一个测试用例。它可以工作,我可以作为junit测试执行,也可以在实际设备上从命令行执行 现在,我想将这个robotium/solo测试用例转移到我们现有的测试框架中,其中每个类/测试用例都由“abstractchecker”扩展。下面是我们的一个web测试用例的示例 package ipoMonit

作为一名对java没有深入了解的技术测试人员,我有一个关于robotium和ActivityInstrumentationTestCase2的问题。我已经设法使用eclipse和robotium创建了一个测试用例。它可以工作,我可以作为junit测试执行,也可以在实际设备上从命令行执行

现在,我想将这个robotium/solo测试用例转移到我们现有的测试框架中,其中每个类/测试用例都由“abstractchecker”扩展。下面是我们的一个web测试用例的示例

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();
}
//进行测试并使用检查器
}
所以我很抱歉,但我认为你的问题的答案是否定的,但希望上面有一些关键字可以帮助你进行更多的研究。