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仿真器或真实设备上的测试应用程序中运行它们。
我们将在这个食谱中使用。
开箱即用,测试文件夹包含一个示例测试。我们将替换这个测试用例:
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
原创粉丝点击