对于我正在使用的仪器测试
@RunWith(AndroidJUnit4.class)
Run Code Online (Sandbox Code Playgroud)
从
import androidx.test.runner.AndroidJUnit4;
Run Code Online (Sandbox Code Playgroud)
为了建立我的测试用例.现在,这条线被标记为与提示使用过时AndroidJUnit4的
import androidx.test.ext.junit.runners.AndroidJUnit4
Run Code Online (Sandbox Code Playgroud)
但是,如果我尝试AndroidJUnit4从命名包导入我得到错误,ext无法解决.
您是否有任何想法,应该在gradle中包含哪些包来解决此问题?
我必须使用Automated UI测试工具,我对使用Robotium和Google Espresso感到困惑.
两者之间有哪些主要区别?是否存在一个但不存在的功能?
在项目中,在Android Studio中,默认情况下,有两个测试文件夹.
首先是src/androidTest.此文件夹已存在于以前版本的Android Studio中.不过,现在有一个新的测试文件夹,默认情况下src/test,新的依赖,testCompile 'junit: junit: 4.12'在build.gradle.
我用哪个文件夹进行测试?两者有什么不同?
有谁知道如何使用Robolectric测试以下设置?
包含ViewPager的片段,使用CursorLoader加载的数据.
使用下面的代码,CursorLoader永远不会被推入视图寻呼机的适配器中.我被await()电话困住了.
EventsFragmentTest.java:
@RunWith(CustomRobolectricTestRunner.class)
public class EventsFragmentTest extends AbstractDbAndUiDriver
{
// which element in the view pager we are testing
private static final int TEST_INDEX = 0;
protected SherlockFragmentActivity mActivity;
protected EventsFragment_ mFragment;
@Override
@Before
public void setUp() throws Exception
{
// create activity to hold the fragment
this.mActivity = CustomRobolectricTestRunner.getActivity();
// create and start the fragment
this.mFragment = new EventsFragment_();
}
@Test
public void sanityTest()
{
// create an event
final Event event = this.createEvent();
// …Run Code Online (Sandbox Code Playgroud) 我是测试世界的新手,更是Android测试世界的新手.在对Robolectric进行研究时,有助于对android进行测试的一件事让我感到困惑.有时在网络上我看到人们testCompile在引用Robolectric而其他人使用时在gradle构建脚本的依赖关系中使用关键字androidTestCompile.当然两者都无效?
有人可以解释两者之间的区别,以及使用Robolectric时应该使用哪一个?
android gradle robolectric android-testing android-gradle-plugin
我们正在构建一个复杂的Android应用程序,其中包含许多活动中的许多屏幕和工作流程.我们的工作流程类似于您在银行的ATM机上看到的工作流程,例如,有一个Activity登录过渡到主菜单Activity,可以根据用户的选择转换到其他活动.
由于我们有如此多的工作流程,因此我们需要创建跨多个活动的自动化测试,以便我们可以从头到尾测试工作流程.例如,使用ATM示例,我们希望输入有效的PIN码,验证是否将我们发送到主菜单,选择提取现金,验证我们是否在提取现金屏幕等等,并最终找到自己回到主菜单或"登出".
我们玩过Android(例如ActivityInstrumentationTestCase2)和Positron附带的测试API ,但似乎都没有超出单一范围的测试能力Activity,虽然我们可以在这些工具中找到一些用于某些单元测试的实用工具,但他们赢了不能满足我们测试多个活动的测试场景的需求.
我们对xUnit框架,脚本,GUI记录器/回放等持开放态度,并对任何建议表示感谢.
每当我尝试运行测试时,控制台都说:
Running tests
Test running startedTest running failed: Unable to find instrumentation info for:
ComponentInfo{com.employeeappv2.employeeappv2.test/android.test.InstrumentationTestRunner}
Empty test suite.
Run Code Online (Sandbox Code Playgroud)
我已经坚持了一段时间,到目前为止我在网上看到的解决方案没有帮助.我的项目结构设置如下:
*主模块-src*instrumentTest -java*main -java -manifest*build.gradle
我的build.gradle文件如下所示:
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:0.9.+'
}
}
apply plugin: 'android'
repositories {
mavenCentral()
}
android {
compileSdkVersion 19
buildToolsVersion "19.1.0"
defaultConfig {
minSdkVersion 16
targetSdkVersion 19
versionCode 1
versionName "2.1.0"
testPackageName "login.test"
testInstrumentationRunner "android.test.InstrumentationTestRunner"
}
buildTypes {
release {
runProguard false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard- rules.txt'
}
}
packagingOptions {
exclude 'META-INF/LICENSE' …Run Code Online (Sandbox Code Playgroud) 在我的测试中,在一次操作之后,有两种可能的视图可以出现并且它们都是正确的.如何检查是否显示其中一个视图.对于我可以检查的单个视图是Displayed().但如果其他视图可见则会失败.如果显示这两个视图中的任何一个,我想通过测试.
onMyButton.perform(click());
onMyPageOne.check(matches(isDisplayed())); //view 1
or
onMyPageTwo.check(matches(isDisplayed())); //view 2
Run Code Online (Sandbox Code Playgroud)
之后,执行单击MyButton,预计会出现任何一个视图(1或2),但不会同时出现.不确定哪一个会被显示.如何检查是否显示其中任何一个?
刚刚开始使用Robolectric,它似乎是我所需要的.但是,我在使用SharedPreferences方面遇到了一些障碍.
我有两个测试用例
Activity需要一个新的/空的sharedPreferences
Activity期望sharedPreferences中包含一些数据
对于测试用例1,测试按预期传递,所以很好:)
但是,对于测试案例2,我似乎无法找到一个很好的方法来为Robolectric提供一些虚假数据,因此Activity能够访问这些假数据.
感觉就像一个非常常见的用例,但我似乎无法弄清楚如何做到这一点!
Android Studio 3.0 Beta2
classpath 'com.android.tools.build:gradle:3.0.0-beta3'
testCompile 'org.robolectric:robolectric:3.4.2'
Run Code Online (Sandbox Code Playgroud)
我正在使用的测试类无法运行:
@Config(constants = BuildConfig.class, sdk = Build.VERSION_CODES.LOLLIPOP)
@RunWith(RobolectricTestRunner.class)
public class RecipeAdapterTest {
private MainActivity activity;
@Before
public void setup() {
activity = Robolectric.setupActivity(MainActivity.class);
/* Also tried this same Error
activity = Robolectric.buildActivity(MainActivity)
.create()
.resume()
.get();
*/
}
@Test
public void testActivityShouldNotBeNull() {
assertThat(activity, is(notNullValue()));
}
}
Run Code Online (Sandbox Code Playgroud)
这是错误的堆栈跟踪:
android.content.res.Resources$NotFoundException: String resource ID #0x7f0c0020
at android.content.res.Resources.getText(Resources.java:274)
at android.content.res.Resources.getString(Resources.java:360)
at android.content.Context.getString(Context.java:376)
at org.robolectric.shadows.ShadowActivity.getActivityTitle(ShadowActivity.java:100)
at org.robolectric.shadows.ShadowActivity.callAttach(ShadowActivity.java:110)
at org.robolectric.android.controller.ActivityController.attach(ActivityController.java:56)
at org.robolectric.android.controller.ActivityController.of(ActivityController.java:25)
at org.robolectric.Robolectric.buildActivity(Robolectric.java:98)
at org.robolectric.Robolectric.buildActivity(Robolectric.java:94)
at org.robolectric.Robolectric.setupActivity(Robolectric.java:102) …Run Code Online (Sandbox Code Playgroud) android-testing ×10
android ×9
robolectric ×4
testing ×3
gradle ×2
java ×2
junit ×2
androidx ×1
listview ×1
robotium ×1
unit-testing ×1