Android 系列 3.4使用Android Studio和JUnit进行测试
来源:互联网 发布:js实现图片的移动 编辑:程序博客网 时间:2024/05/03 23:28
3.4使用Android Studio和JUnit进行测试
伊恩达尔文
问题
您想要使用JUnit来测试基于Android Studio的应用程序。
解
对于独立单元测试,请使用“test”文件夹;对于完整的Android单元测试,使用“androidTest”文件夹。
讨论
为了本练习的目的,我们将创建一个新的Android Studio项目(参见Recipe 1.9)。将项目命名为HelloStudioTesting,并使用包名称com.example在下一个屏幕上,选择手机和平板电脑。选择您最喜欢的API级别。 Gradle通过磨削后,你会看到一个项目结构,如图3-13所示。
图3-13。 Android Studio项目结构
注意特别是存在两个测试文件夹,具有相同的包名称,标记为test和androidTest。该项目设置为支持两种最常见的测试类型,即纯Java JUnit测试和Android特定测试。后者使用JUnit,但更像是一个集成测试比单元测试/单元测试测试代码隔离; androidTest机制支持测试常见的Android组件,并在运行在AVD仿真器或真实设备上的测试应用程序中运行它们。
我们将在这个食谱中使用。
开箱即用,测试文件夹包含一个示例测试。我们将替换这个测试用例:
注意现代JUnit约定:使用任意方法名称和@Test注释来标记测试方法。为了使这个测试工作,我们创建了一个名为DataModel的类,带有一个硬编码的getName()方法。要了解的关键是,这种测试方法使用标准JUnit并在标准JVM中运行它,因此您可以测试任何“正常”Java组件,但是您不能测试依赖于Android框架的任何东西!我们将在几个段落中介绍这种类型的测试。
首先注意,示例JUnit测试有一个代码注释 - 我留在图3-14 - 其中说:要进行单元测试,在构建变量视图中切换测试工件。
图3-14。测试中的非示例测试
在实践中,我发现只需右键单击测试模块就更容易了,如图3-15所示。
图3-15。在测试中运行测试
在这个微不足道的例子中,你应该期望你的测试第一次通过,但是可以看到绿色条显示出来(见图3-16),这表明100%的测试通过了。
图3-16。单元测试 - 成功
这段代码基本上是创建主Activity,找到TextView,并断言TextView包含正确的文本。 我们通过右键单击androidTest文件夹(而不是图3-15中的测试文件夹)并选择Run菜单项来运行它,如图3-17所示。
图3-17。 运行androidTest测试
同样,这个简单应该在第一次运行时传递的东西,我们应该得到一个绿色条,如图3-18所示。
图3-18。 Android测试 - 成功
这些都是“hello,world”品种的简单测试,但显示您需要构建和运行两种类型的更复杂的测试:纯JUnit和Android特定的测试。
伊恩达尔文
问题
您想要使用JUnit来测试基于Android Studio的应用程序。
解
对于独立单元测试,请使用“test”文件夹;对于完整的Android单元测试,使用“androidTest”文件夹。
讨论
为了本练习的目的,我们将创建一个新的Android Studio项目(参见Recipe 1.9)。将项目命名为HelloStudioTesting,并使用包名称com.example在下一个屏幕上,选择手机和平板电脑。选择您最喜欢的API级别。 Gradle通过磨削后,你会看到一个项目结构,如图3-13所示。
图3-13。 Android Studio项目结构
注意特别是存在两个测试文件夹,具有相同的包名称,标记为test和androidTest。该项目设置为支持两种最常见的测试类型,即纯Java JUnit测试和Android特定测试。后者使用JUnit,但更像是一个集成测试比单元测试/单元测试测试代码隔离; androidTest机制支持测试常见的Android组件,并在运行在AVD仿真器或真实设备上的测试应用程序中运行它们。
我们将在这个食谱中使用。
开箱即用,测试文件夹包含一个示例测试。我们将替换这个测试用例:
public class DataModelTest {@Testpublic void NameCorrect() throws Exception {assertEquals("Robin Good", new DataModel().getName());}}
注意现代JUnit约定:使用任意方法名称和@Test注释来标记测试方法。为了使这个测试工作,我们创建了一个名为DataModel的类,带有一个硬编码的getName()方法。要了解的关键是,这种测试方法使用标准JUnit并在标准JVM中运行它,因此您可以测试任何“正常”Java组件,但是您不能测试依赖于Android框架的任何东西!我们将在几个段落中介绍这种类型的测试。
首先注意,示例JUnit测试有一个代码注释 - 我留在图3-14 - 其中说:要进行单元测试,在构建变量视图中切换测试工件。
图3-14。测试中的非示例测试
在实践中,我发现只需右键单击测试模块就更容易了,如图3-15所示。
图3-15。在测试中运行测试
在这个微不足道的例子中,你应该期望你的测试第一次通过,但是可以看到绿色条显示出来(见图3-16),这表明100%的测试通过了。
图3-16。单元测试 - 成功
androidTest包用于测试Android特定的功能,如Activity代码。此测试机制基于JUnit3.8,其中需要从TestCase继承,并且不使用注释。您可以通过添加测试运行器并创建备用测试配置来使用JUnit 4;我们将在方法3.6中使用这种方法。有几个基本测试类,其中一些现在已被弃用。我们将使用ActivityInstrumentationTestCase2类并忽略弃用警告。我们的示例测试如下所示:
public class MainTest extends ActivityInstrumentationTestCase2<MainActivity> {public MainTest() {super("my.pkg.app", MainActivity.class);}public void test() {TextView textView = (TextView) getActivity().findViewById(R.id.textView);assertEquals("Hello World!", textView.getText());}}
这段代码基本上是创建主Activity,找到TextView,并断言TextView包含正确的文本。 我们通过右键单击androidTest文件夹(而不是图3-15中的测试文件夹)并选择Run菜单项来运行它,如图3-17所示。
图3-17。 运行androidTest测试
同样,这个简单应该在第一次运行时传递的东西,我们应该得到一个绿色条,如图3-18所示。
图3-18。 Android测试 - 成功
这些都是“hello,world”品种的简单测试,但显示您需要构建和运行两种类型的更复杂的测试:纯JUnit和Android特定的测试。
0 0
- Android 系列 3.4使用Android Studio和JUnit进行测试
- android studio测试--JUnit
- Android 系列 3.3使用Eclipse和JUnit测试
- Android 系列 3.5使用Robolectric和JUnit测试4
- Android 系列 3.6使用ATSL,Espresso和JUnit测试4
- 在Android Studio中使用JUNIT测试
- Android 中使用JUnit进行自动测试
- 使用Android Junit进行测试的注意事项
- 使用android stdio1.5进行junit测试
- 【学习笔迹】系列十一:Android Studio实现JUnit Instrumentation测试
- android 结合Junit进行测试.
- Android下进行Junit测试
- [Android学习笔记]使用Android Junit进行测试的注意事项
- android 使用Junit测试
- Android使用Junit测试
- 使用 Android Studio 进行测试 单元测试
- Android Studio 使用Monkey进行压力测试
- Hello Android - 进行android junit 测试
- SimplePing
- java 反射 InvocationTargetException 笔记
- 第7章 sed、gawk介绍与正则表达式-----------(定义基本正则表达式(BRE)模式)
- 设计师读书笔记连载系列之《设计师要懂心理学》
- JAVA基础入门运算符
- Android 系列 3.4使用Android Studio和JUnit进行测试
- Android调用相机并获取原图Path(非缩略图)
- POJ1852 Ants
- 在PHP中使用协程实现多任务调度
- [题解]BJOI2014
- Android60分钟搞定《FlappyBird》飞扬的小鸟游戏
- RocksDB译文之一 -- RocksDB简介
- 算法-合唱队
- 串口调试工具(Python2.7+pyserial+Tkinter)(很好的Tkinter例子,代码层次结构等)