我之前听过很多次这个术语(谈论编程时),但是找不到任何解释是什么意思.有什么好的文章或解释吗?我没有找到任何值得一提的东西.
我尝试XCUIApplication在UI测试中设置实例中的属性setUp()
let app = XCUIApplication()
app.launchEnvironment = ["testenv" : "testenvValue"]
app.launchArguments = ["anArgument"]
app.launch()
Run Code Online (Sandbox Code Playgroud)
在didFinishLaunch我运行我的UITests时,我试图在屏幕上显示这些内容
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
if launchOptions != nil {
for (key, value) in launchOptions! {
let alertView = UIAlertView(title: key.description, message: value.description, delegate: nil, cancelButtonTitle: "ok")
alertView.show()
}
}
Run Code Online (Sandbox Code Playgroud)
但我似乎无法找到我设定的论点和环境.有谁知道怎么抓住他们?
我有一个ImageButton设计不完全可见的自定义,因此当我执行单击操作时,我收到此错误:
android.support.test.espresso.PerformException: Error performing 'single click' on view 'with id: test.com.myproject.app:id/navigationButtonProfile'.
Caused by: java.lang.RuntimeException: Action will not be performed because the target view does not match one or more of the following constraints:
at least 90 percent of the view's area is displayed to the user.
at android.support.test.espresso.ViewInteraction$1.run(ViewInteraction.java:138)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:422)
at java.util.concurrent.FutureTask.run(FutureTask.java:237)
at android.os.Handler.handleCallback(Handler.java:733)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:157)
at android.app.ActivityThread.main(ActivityThread.java:5356)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1265)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1081)
at dalvik.system.NativeStart.main(Native Method)
Run Code Online (Sandbox Code Playgroud)
按钮的一小部分位于屏幕之外(即,它在顶部被裁剪),可能按钮的12%在屏幕外.这是设计使然,无法滚动或执行任何视图操作以使其可见.任何人都知道如何超越这个90%的约束?
解决方案: 我按照建议创建了自己的点击操作,并且完美运行.我从Google Espresso中复制了该类,并在此方法中将其从90更改为75: …
我有一个ViewPager只包含图片和按钮的项目.
我无法与项目(页面)的UI成功交互,因为除了显示的图片之外,没有什么可以区分(从UI的角度来看)所有项目ViewPager.
我试图只选择一个有位置的项目:
onData(is(instanceOf(ItemClass.class)))
.atPosition(0)
.onChildView(withId(R.id.button))
.perform(click());
Run Code Online (Sandbox Code Playgroud)
造成:
NoMatchingViewException:层次结构中找不到匹配的视图:可从类中分配:class android.widget.AdapterView
如何ViewPager使用Espresso 访问和测试项目?
我想验证一个元素是否可见取决于它的.hidden属性,但我找不到使用新的Xcode 7 UI测试的有效方法.
我试过了myelement.exists,myelement.hittable但它们似乎没有像我预期的那样工作.我想他们与hidden财产合作.隐藏的元素不应该存在且不可命中......但这不是当前的行为(我可以理解exists行为......但隐藏的元素应该是不可命中的IMO).
还有另一种方法来验证"隐藏"的财产价值吗?
我一直试图通过测试来覆盖我的Android应用程序,并且最近开始使用espresso.到目前为止,它印象深刻.但是,我的应用程序的大多数功能都要求用户登录.由于所有测试都是独立的,因此需要为每个测试注册一个新用户.这很好,但是每次测试所需的时间因此而大大增加.
我试图找到一种方法在类(测试)中注册一次用户,然后使用相同的用户帐户执行该类中的所有测试.
我能够做到这一点的一种方法是实际上只有一个test(@Test)方法按我想要的顺序运行所有其他测试.然而,这是一种全有或全无的方法,因为gradle cAT任务仅在结束时输出结果一次,而不提供有关可能已通过/失败的中间测试的信息.
我也尝试了这种@BeforeClass方法,但是没有用(没有使用调试选项我使用过它的类的gradle输出,看起来它需要很长时间才能进入下一类测试).
是否有更好的方法在课程开始时注册用户一次,然后在测试结束时注销一次?
任何帮助赞赏.
所以,我已经掌握了现有的项目,并且我正在尝试使用apple提供的这个新的花哨UI测试包来创建一些UI测试.问题是测试目标无法访问任何外部框架(我需要使用其中一个进行一些设置).在构建阶段添加框架和从主目标中复制框架搜索路径不会做任何事情.
经过一天的浏览,我发现只有一件事,那就是"让事情变得有点不同".通过将Bundle Loader和Test Host设置为$(BUILT_PRODUCTS_DIR)/App.app/App,我仍然无法将外部框架导入test.m,但我可以导入为他们自己执行此操作的类.除非没有破坏某些东西,否则一切都会好起来的.通过设置Bundle和Host,我的UI测试无法执行启动方法:
[[[XCUIApplication alloc] init] launch];
Run Code Online (Sandbox Code Playgroud)
它崩溃并出现错误:断言失败:UI测试失败 - 应用程序状态仍未终止.
最后,我可以从设置中删除启动方法并手动触发每个单独的测试,因此每次执行前都会重新启动应用程序,但这个解决方案似乎错了(特别是对于一些较大的项目).有谁知道处理这个问题的正确方法?
Apple在Xcode 7中引入了新的UI测试,但是每当测试启动应用程序时我都会遇到困难,它从应用程序之前的数据开始.这意味着测试不能独立,并且可能受到其他测试的影响.
无法访问用户默认值和其他数据,因为运行测试的应用程序无法访问已测试应用程序的捆绑包.脚本也是不可能的,因为它们可以在测试之前或之后运行.并且无法在iOS上执行NSTask以在每个测试套件之前运行脚本.
有没有办法在每个测试套件之前重置应用程序数据?
我已经决定使用Google的Espresso进行应用程序测试的测试标准之一是:
测试应在屏幕方向旋转后保持活动状态
使用Espresso时如何旋转屏幕?
我尝试了以下Robotium代码(是的,我在我的Espresso测试中放置了Robotium代码,所以起诉我)
solo.setActivityOrientation(solo.LANDSCAPE);
solo.setActivityOrientation(solo.PORTRAIT);
Run Code Online (Sandbox Code Playgroud)
但是当我在Espresso测试中运行它时,它会崩溃应用程序.
有没有办法做到这一点?
在此先感谢您的帮助
我正在为Android编写一些Espresso测试.我正在运行以下问题:
为了使某个测试用例正常运行,我需要在应用程序中禁用某些功能.因此,在我的应用程序中,我需要检测我是否正在运行Espresso测试,以便我可以禁用它.但是,我不想使用BuildConfig.DEBUG,因为我不希望在调试版本中禁用这些功能.此外,我想避免创建一个新的buildConfig,以避免创建太多的构建变体(我们已经定义了很多风格).
我一直在寻找一种方法来定义buildConfigField以进行测试,但我在Google上找不到任何引用.
ui-testing ×10
android ×5
ios ×3
xcode ×3
swift ×2
xcode7 ×2
fixtures ×1
junit4 ×1
objective-c ×1
robotium ×1
test-fixture ×1
testing ×1
uitest ×1