Articles of junit

Instrumentation.ActivityMonitor不监控Intent.ACTION_CALL

我有一个简单的测试用例,用于测试是否在按钮点击时启动了拨出呼叫。 public void testCalling(){ IntentFilter callFilter = new IntentFilter(); callFilter.addAction(Intent.ACTION_CALL); callFilter.addCategory(Intent.CATEGORY_DEFAULT); callFilter.addDataScheme(“tel:”); ActivityMonitor mMonitor = new ActivityMonitor(callFilter, null, false); getInstrumentation().addMonitor(mMonitor); mSolo.clickOnText(“CALL”); assertTrue(0 < mMonitor.getHits()); sendKeys(KeyEvent.KEYCODE_ENDCALL); } 虽然调用了Intent(传出调用),但我的ActivityMonitor无法注册它。 堆栈跟踪是 05-28 17:11:09.183: I/ActivityManager(71): Starting activity: Intent { act=android.intent.action.CALL dat=tel:+xxxxxxx cmp=com.android.phone/.OutgoingCallBroadcaster } 请帮忙 我能find的唯一其他资源就是这个讨论结束时没有 Android开发者组的任何解决方案

AndroidJUnit4.class + org.junit.Assume.assumeTrue = AssumptionViolatedException

我已经设法让我的Android项目转换到JUnit4,当然我想要做的主要原因是没有用。 如果有人在这里有想法,会喜欢任何帮助。 我试图解决的问题是,如果构建未指向登台服务器,我想自动跳过某些测试。 我已经设置了一个BUILD_TYPE ,它使用gradle来注入基本URL。 我在我的设置中设置了一个assumeThat子句,它正确识别构建何时不进行分段,但不是暂停和忽略其余的测试,而是抛出exception并失败。 这是我的实时API测试的基类 – 我用@RunWith(AndroidJUnit4.class)注释了这一点,所以理论上应该始终使用JUnit4运行器: package com.[my package].nonuitests.liveservertests; import android.support.test.runner.AndroidJUnit4; import com.[my package].nonuitests.BaseAndroidTest; import org.junit.Test; import org.junit.runner.RunWith; /** * Tests against the live API. All tests descending from this class will * be ignored if the BUILD_TYPE is not staging. */ @RunWith(AndroidJUnit4.class) public class BaseLiveServerTests extends BaseAndroidTest { private static final […]

Android + Kotlin中的实验性JUnit支持无法正常工作

Google最近发布了在Android Studio中在本地JVM上运行junit的实验性支持。 我想尝试一下,因为我正在使用Kotlin开发我的Android应用程序,我希望我的测试类也可以用Kotlin编写。 不幸的是,我无法让它发挥作用。 我更新了我的gradle配置: sourceSets { main.java.srcDirs += ‘src/main/kotlin’ androidTest.java.srcDirs += ‘src/androidTest/kotlin’ test.java.srcDirs += ‘src/test/kotlin’//this line was added } testCompile ‘junit:junit:4.12′ testCompile “org.mockito:mockito-core:1.9.5” Android Studio识别测试文件夹。 这是我的简单测试类,只是为了看它是否有效 public class MyFirstTestClass { [Test] fun firstTest() { println(“I am OK”) Assert.assertTrue(“”.isEmpty()) } } 如果我尝试运行它,我会收到以下消息 找不到类:’com.example.MyFirstTestClass’

从gradle运行单个Android(单元)测试,而不加载其他项目依赖项

我正在使用Jake Wharton的精彩插件进行Androidunit testing。 我努力让这些unit testing运行的目的是为了速度(TDD快速反馈和所有)。 我已经设法正确配置它并运行一些示例测试,如下所示: ./gradlew test 每当我运行测试时,我会注意到以下输出: Relying on packaging to define the extension of the main artifact has been deprecated and is scheduled to be removed in Gradle 2.0 The Test.testReportDir property has been deprecated and is scheduled to be removed in Gradle 2.0. Please use the Test.getReports().getHtml().getDestination() property instead. The TaskContainer.add() […]

在具有特定顺序的类的包上使用android检测运行Junit测试

我正在尝试使用命令行运行android instrumentation Junit测试。我正在使用以下命令,它正在启动测试权限。 adb shell am instrument -w com.android.foo/android.test.InstrumentationTestRunner 我的android项目包有以下java源文件(按字母顺序) com.android.foo ActivityTest ContactsTest LaunchTest SendTest 当我使用上面提到的命令运行测试时,测试首先开始执行ActivityTest,依此类推。 这不是我想要的,我希望它首先执行LaunchTest,然后是ContactTest,SendTest和ActivityTest。 我试过用 adb shell am instrument -w -e class com.android.foo.LaunchTest,com.android.foo.ContactTest com.android.foo/android.test.InstrumentationTestRunner 但它给了我一个错误可能是因为我没有在我的代码中使用TestCase类,而是我的LaunchTest和其他人扩展了ActivityInstrumentationTestCase2。 任何帮助表示赞赏。

渲染问题并无法解决Android Studio 2.0中的R,为什么会出现以及如何解决这些问题?

我试图在gradle和java中评论代码的junit部分。 它运作正常。 但这是解决这个问题的唯一方法吗? 为什么评论junit它有效? 为什么会出现这个问题? 有更好的选择吗?

在unit testing期间打开屏幕

在测试活动时,我遇到了针对真实设备运行unit testing的小问题。 问题是当屏幕未打开时它们会失败。 这个问题有优雅的解决方案吗? 除了稍微向右移动我的arm并自行按下电源按钮。 我对WakeLock或其他任何可能进入主应用程序的代码不感兴趣。

使用Robolectric 3.0测试碎片

我有两个片段附加到一个活动。 public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); LoginFragment loginFragment = new LoginFragment(); FragmentManager fragmentManager = getSupportFragmentManager(); FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); fragmentTransaction.add(android.R.id.content,loginFragment); fragmentTransaction.commit(); } public void userReg(View view){ RegisterFragment regFragment = new RegisterFragment(); FragmentManager fragmentManager1 = getSupportFragmentManager(); FragmentTransaction fragmentTransaction1 = fragmentManager1.beginTransaction(); fragmentTransaction1.addToBackStack(“added”); fragmentTransaction1.replace(android.R.id.content,regFragment); fragmentTransaction1.commit(); } } 注册片段通过按钮附加。 现在我想在robolectric […]

androidunit testing:在测试活动之前清除prefs

我希望确保在我的unit testing中启动Activity之前清除首选项。 问题是要清除首选项,需要调用getActivity() 。 之后, Activity开始,读取首选项。 @Override protected void setUp() throws Exception { super.setUp(); mActivity = this.getActivity(); SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(mActivity); prefs.edit().clear().commit(); } 当调用getActivity() ,会创建Activity ,它会在下一行清除pref之前读取pref的值。 有没有办法在不启动Activity情况下获取Context对象? 我是Androidunit testing的新手,所以也许我错过了一些基本的东西。 谢谢。

Android Test testPreconditions

在Android开发人员中,我已经看到testPreconditions()方法应该在所有测试之前启动。 但在我的应用测试中,它的表现就像一个普通的测试。 它不会在所有测试之前运行。 有什么不对 ? 以下是来自android开发人员的testPreconditions()的描述:“preconditions测试在执行其他测试之前检查初始应用程序条件。它类似于setUp(),但开销较少,因为它只运行一次。”