作为一名没有深入了解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录制的我的机器人测试用例看起来像这样
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;
}
}
}
我注意到在eclipse中创建robotium测试用例时,会自动添加库和类路径容器。有没有人有一个可以共享的工作示例或链接到一个?我在网上搜索了一段时间没有找到任何解决办法。任何帮助表示赞赏。
最诚挚的问候, 的Mattias
答案 0 :(得分:1)
您的AbstractChecker
正在Selenium test,ActivityInstrumentationTestCase2
正在进行Android Instrument Test。
根据您提供的信息,实际上不可能将两者结合起来,即使这样,我认为您不会得到您期望的结果。
您应该在AbstractChecker
框架内查看并查看所需的功能。摘要并将其提取到一个类中,您可以将其用作ActivityInstrumentationTestCase2
的组合。
Java does not support multiple inheritance因此你无法做到
Test extends AbstractChecker and ActivityInstrumentationTestCase2 {
良好的编程方法是prefer composition over inheritance,这样你就不会陷入困境,你可以撰写Test
和Checker
的{{1}}。< / p>
TestCase
为你here is the source做些什么并不是什么秘密。
如果你想考虑像下面这样的构图:
ActivityInstrumentationTestCase2
所以我很抱歉,但我认为您的问题的答案是否定的,但希望上面有一些关键字可以帮助您进行更多研究。