- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我需要告诉 Espresso 等到我的 Activity 空闲。我正在使用界面IdlingResource
为达到这个。这是我用于测试的代码:
public class MyActivity extends Activity implements IdlingResource {
private boolean isIdle;
ResourceCallback resourceCallback;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_my);
final Button myButton = (Button) findViewById(R.id.myButton);
final ProgressBar progressBar = (ProgressBar) findViewById(R.id.progressBar);
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
myButton.setVisibility(View.VISIBLE);
progressBar.setVisibility(View.GONE);
isIdle = true;
}
}, 3000);
}
public void ButtonClicked(View view) {
Toast.makeText(MyActivity.this, "OK", Toast.LENGTH_SHORT).show();
}
@Override
public String getName() {
return getClass().getName();
}
@Override
public boolean isIdleNow() {
if(isIdle){
resourceCallback.onTransitionToIdle();
return true;
}
return false;
}
@Override
public void registerIdleTransitionCallback(ResourceCallback resourceCallback) {
this.resourceCallback = resourceCallback;
}
}
junit.framework.AssertionFailedError: Exception in constructor: testA (java.lang.NoClassDefFoundError: rapnaveia.com.br.myapplication.MyActivity
at rapnaveia.com.br.myapplication.ApplicationTest.<init>(ApplicationTest.java:16)
at java.lang.reflect.Constructor.constructNative(Native Method)
at java.lang.reflect.Constructor.newInstance(Constructor.java:417)
at junit.runner.BaseTestRunner.getTest(BaseTestRunner.java:118)
at android.test.AndroidTestRunner.getTest(AndroidTestRunner.java:149)
at android.test.AndroidTestRunner.setTestClassName(AndroidTestRunner.java:57)
at android.test.suitebuilder.TestSuiteBuilder.addTestClassByName(TestSuiteBuilder.java:80)
at android.test.InstrumentationTestRunner.parseTestClass(InstrumentationTestRunner.java:443)
at android.test.InstrumentationTestRunner.parseTestClasses(InstrumentationTestRunner.java:424)
at android.test.InstrumentationTestRunner.onCreate(InstrumentationTestRunner.java:370)
at com.google.android.apps.common.testing.testrunner.GoogleInstrumentationTestRunner.onCreate(GoogleInstrumentationTestRunner.java:114)
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4435)
at android.app.ActivityThread.access$1300(ActivityThread.java:141)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1316)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:5103)
at java.lang.reflect.Method.invokeNative(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
at dalvik.system.NativeStart.main(Native Method)
)
at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:191)
at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:176)
at android.test.InstrumentationTestRunner.onStart(InstrumentationTestRunner.java:554)
at com.google.android.apps.common.testing.testrunner.GoogleInstrumentationTestRunner.onStart(GoogleInstrumentationTestRunner.java:167)
at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1701)
public class ApplicationTest extends ActivityInstrumentationTestCase2<MyActivity> {
public ApplicationTest() {
super(MyActivity.class);
}
public void testA(){
Espresso.registerIdlingResources(getActivity());
Espresso.onView(withId(R.id.myButton)).perform(click());
}
}
apply plugin: 'com.android.application'
android {
compileSdkVersion 20
buildToolsVersion "20.0.0"
defaultConfig {
applicationId "rapnaveia.com.br.myapplication"
minSdkVersion 15
targetSdkVersion 20
versionCode 1
versionName "1.0"
testApplicationId 'br.com.rapnaveia'
testInstrumentationRunner 'com.google.android.apps.common.testing.testrunner.GoogleInstrumentationTestRunner'
}
buildTypes {
release {
runProguard false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
androidTestCompile files('libs/espresso-1.1-bundled.jar')
}
最佳答案
问题出在 gradle 配置中。您的项目正在尝试编译 espresso jar 两次。
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
androidTestCompile files('libs/espresso-1.1-bundled.jar')
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
}
关于android - NoClassDefFoundError 实现 IdlingResource,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25405221/
我需要告诉 Espresso 等到我的 Activity 空闲。我正在使用界面IdlingResource为达到这个。这是我用于测试的代码: public class MyActivity e
我注意到 Espresso 每五秒轮询一个特定的 IdlingResource 的 isIdleNow() 方法。 是否可以调整这个粒度? 提前致谢! 最佳答案 简答: 不,从 3.0.1 版开始,它
我想使用空闲资源,因为我在我的应用程序中使用 RxJava 和 EventBus,有时我的测试会失败(我认为这是因为同步)。 依赖关系: androidTestCompile 'com.android
我在使用 Espresso 进行测试时遇到了空闲资源的问题。 这是行不通的。它只被调用两次,仅此而已,即使返回 false。 public class MyIdlingResource impleme
我正在尝试测试 MyActivity 在传递不正确的 intent extras 时显示一个警告对话框。这是一个 url,所以我将 url 传递给内部 webView 以加载 url 并在发生任何错误
我有以下 Espresso 代码: @Test fun backgroundWorkDisplaysTextAfterLoading() { onView(withId(R.id.btn_ne
我正在尝试找到一种方法来很好地实现一个 IdlingResource,它将轮询 CoroutineDispatcher 的 isActive 属性。但是,从调试来看,检查此属性时似乎从来没有 Acti
我是 Espresso 的新手,正在尝试在 fragment 上编写测试,在 fragment 实例化时进行 Retrofit 调用。接到电话后,我想检查 fragment 以查看 View 是否存在
我最近将我的应用程序从使用异步任务转换为 rxjava。现在,由于 espresso 没有用于 rxjava 的空闲资源,我的 espresso 测试不再等待我的数据调用完成。我注意到你可以制作自定义
我正在尝试测试 AutoCompleteTextView 是否会在键入某些单词后显示项目。但是在键入和显示弹出窗口之间存在延迟。首先,我使用的是 Thread.sleep(),它工作得很好。但我知道这
我有一个 Activity 。它包含 fragment ,这个 fragment 有 RecyclerView。从服务器加载的一些数据并显示在 RecyclerView 的第一项中。 我需要为此项目设
我希望能够让 Espresso 将 Picasso 作为 IdlingResource 进行监控,以便我可以运行 ViewMatcher s 一旦图像已成功加载。 通过浏览 Picasso 源代码,我
我正在尝试编写 Espresso 单元测试,该测试依赖于与外部应用程序建立 TCP/IP 网络连接以便成功通过的组件。 测试失败是因为 TCP/IP 网络花费的时间比 Espresso 允许的时间长.
我正在使用 Espresso 编写 UI 测试。应用程序与服务器紧密合作,因此在很多情况下,我需要等待计算值,或者获取并显示数据等。Espresso 建议为此使用 IdlingResource。我的
我有一个托管 fragment F1 的 Activity 。单击按钮后,F1 将替换为另一个 fragment F2。按下后退按钮时,应用会通过退出过渡动画从 F2 返回到 F1。 我的 Espre
我基本上有一个自定义的 IdlingResource,它接受一个 View 构造函数参数。我找不到任何真正谈论如何实现它的地方。 我正在尝试使用这个答案:https://stackoverflow.c
在这里,我想要一个自定义的查找 View 函数:如果使用给定的 Matcher 在 10 秒内找不到 View ,则返回 bool 值 false,否则返回 View 。注意,我不想使用 Idling
在我的测试中,我有一个阶段,在按下按钮后,应用程序会执行大量异步计算并向云服务发出请求,之后它会显示特定 View 。 是否可以使用 Espresso 的 IdlingResource 实现来等待某个
我正在尝试将我的一些 Robotium 单元测试转换为使用 Espresso,但在通过测试更新 UI 时遇到了问题。该测试针对的是一个 fragment ,该 fragment 是一种显示来自对象的数
我正在编写集成测试,在 UI 中执行操作,使用 Retrofit 启动网络调用。 我知道我需要实现 CountingIdlingResource ,但我想以正确的方式进行(如果已经完成,则不要重新发明
我是一名优秀的程序员,十分优秀!