GVKun编程网logo

【Android Studio 中单元测试生成测试报告】(android 单元测试教程)

22

在本文中,我们将详细介绍【AndroidStudio中单元测试生成测试报告】的各个方面,并为您提供关于android单元测试教程的相关解答,同时,我们也将为您带来关于AndroidStudio中的Ko

在本文中,我们将详细介绍【Android Studio 中单元测试生成测试报告】的各个方面,并为您提供关于android 单元测试教程的相关解答,同时,我们也将为您带来关于Android Studio 中的 Kotest 单元测试实现、Android studio 使用心得 (八)---- 测试程序单元测试、Android studio 单元测试、android studio 单元测试生成测试报告以及生成单元测试代码覆盖率报告的有用知识。

本文目录一览:

【Android Studio 中单元测试生成测试报告】(android 单元测试教程)

【Android Studio 中单元测试生成测试报告】(android 单元测试教程)

1、选择View-->Tool Windows-->Gradle

2、My Application-->app-->Tasks-->verification-->createDebugCoverageRepor

3、运行测试用例

 

 4、生成的报告目录:C:\Users\Administrator\AndroidStudioProjects\MyApplication\app\build\reports

Android Studio 中的 Kotest 单元测试实现

Android Studio 中的 Kotest 单元测试实现

如何解决Android Studio 中的 Kotest 单元测试实现?

我是单元测试的新手,我正在开发一个 Kotlin 项目,所以我认为使用基于 Kotlin 的框架会很棒。

我在向项目添加依赖项时遇到问题。如果 Kotest 可以在 Gradle

添加以下依赖,运行程序没有检测到“任何可运行的方法”:

testImplementation ''io.kotest:kotest-runner-junit5:4.6.1''
testImplementation "io.kotest:kotest-assertions-core:4.6.1"

我的单元测试代码如下:

package com.consumerfinance.Nowpay

import io.kotest.core.spec.style.AnnotationSpec
import junit.framework.Assert.assertEquals


/**
 * Example local unit test,which will execute on the development machine (host).
 *
 * See [testing documentation](http://d.android.com/tools/testing).
 */

class ExampleUnitTest : AnnotationSpec() {

    @Test
    fun addition_isCorrect() {
        assertEquals(4,2 + 2)
    }
}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

Android studio 使用心得 (八)---- 测试程序单元测试

Android studio 使用心得 (八)---- 测试程序单元测试

   一直想系统专业的了解测试这一块,但是工作过的公司都没有,都是程序员做完了就扔给测试 MM 直接测,MM 也就只是按照需求文档点,也就没有了所谓的单元测试,功能测试。

  这里写一个简单的单元测试,体验下,我相信好多朋友跟我一样,知道单元测试这个名字,但是真要做,不知怎么开始,所以跟大家分享下

  一个登录界面,测试点击登录按钮后是否能正常跳转到首页 (是不是觉得有点无聊....) 初次体验下 android 的 单元测试

准确的说应该是 activity 的单元测试

 

先看目录结构。来给 LoginActivity 写一个单元测试,新建一个类,我这叫 LoginPresenterTest, 然后继承 ActivityUnitTestCase

 

 2 当我们继承 ActivityUnitTestCase 后,要重写的方法不能少 setUp (), 还有一个很重要的地方,空的构造方法,然后 super (LoginActivity.class); 这里如果不这样弄,测试运行就会报错

 

3. 由于继承 ActiviUnitTestCase 的 Activity 不会被 Android 自动启动的。要单独启动 Activity, 你需要显式的调用 startActivity () 方法,并传递一个 Intent 来启动你的目标 Activity

所以先全局的定义一个 Intent 然后在 setUp () 这个初始化方法里面

mLoginIntent = new Intent(getInstrumentation().getTargetContext(), LoginActivity.class);

这个时候我们先不急着调 startActivity ();

4, 现在就可以开始写测试方法了,我想测试一下 Button 上的文字是不是我想要的。我们写一个 test 开头的方法名 testLoginButton_labelText(),上面加上注解 @MediumTest

(PS: 只需要几毫秒的时间的应该被标记为 @SmallTest, 长时间运行的测试(100 毫秒或更多)通常被标记为 @MediumTest,@LargeTest, 主要取决于测试访问资源在网络上或在本地系统。 )

所以我们这里 @MediumTest

来,继续,大家看这个方法里面第一句,就是启动 activity。  

 startActivity(mLoginIntent, null, null);

然后就是通过 findViewByid 找到 Button.

 final Button loginButton = (Button) getActivity().findViewById(R.id.btn_login);

然后就是从 String 获取到你觉得 Button 上的 labe

  final String buttontext = getActivity().getString(R.string.btn_login);

最后对比这个值

  assertEquals("Unexpected button ladel text", buttontext, loginButton.getText());

准备就绪,我们来运行。

鼠标定位到这个方法名上,点击右键 -->Run ()--> 选择小机器人

 

然后就跟正常 run 一样,等待,最后成功就会出现 passed

 

因为 String 里面 <string name="btn_login"> 登录 </string> 我的 Button

    <Button
        android:id="@+id/btn_login"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@+id/et_password"
        android:layout_margin="10dp"
        android:text="@string/btn_login"/>

也是引用的这个 btn_login。所以肯定对比是成功的

继续,假如不一样呢,请看,我换一个值去对比  <string name="title_activity_login">LoginActivity</string>. 这肯定不一样

 

一样的,我们在方法名 testLiginButton_labelText () 上右键,直接 Run (因为之前已经 run 过一次,所以这一次不会再有小机器人选)

然后等待结果

 

是不是觉得比成功要有成就感,因为通过测试发现问题了。。。

Unexpected button ladel text expected:<LoginActivity> but was:< 登录 >

 

好吧,我们再来玩一个。

现在我想测试点击登录按钮后,正常跳转到另外一个 Activity

一样的写一个方法,方法名 test 开头 testLoginActivityMoveToIndex (); 注解别忘记加了

 

方法里面第一句还是一样的,启动 activity

  startActivity(mLoginIntent, null, null);

然后找到 Button

   final Button loginButton = (Button) getActivity().findViewById(R.id.btn_login);

再然后 我们可以用 performClick () 来模拟点击事件

  loginButton.performClick();   

得到跳转后的 Intent

final Intent loginIntent = getStartedActivityIntent();    

去判断是否为空,如果为空就说明跳转失败

 assertNotNull("Intent was null", loginIntent);

 

这一句是判断你在跳转后有没调 finish ()

 assertTrue(isFinishCalled());

 

再回头看看 LoginActivity 里面 Button 监听器里面的代码

大家可以先把 finish () 这个方法注释掉,体验下报错

然后回来测试的方法右键,一样的运行,等待结果

 

如果注掉 finish (). 就会测试出错误

. 我们直接点击报错的地方,会定位到哪测试报错

很明显就是因为我们在跳转后没有 finish (), 但是测试方法里面我们有去测试是否有调   assertTrue (isFinishCalled ());

, 如果加上在 LoginActivity 里面加上 finish (), 那就会成功没问题了.

 

 

好了,这篇文章就是体验下所谓的 Android 单元测试。我会继续学习下去,便跟大家一起分享。之前学习 MVP 模式的时候,都说 MVP 模式的一个优点就是方便单元测试,所以我直接在 MVPDemo 这个项目上写的例子,可是我现在还没有体会到这个优点,我现在就是想像 web 里面的 ut 测试一样,写一个方法,然后直接运行这个方法得到结果,这样我觉得 MVP 方便单元测试这个优点就真的突显极致了。 我也是一直在摸索中。希望大家能多多指点。

源码在这 MVPDemoTest(链接: http://pan.baidu.com/s/1nturpih 密码: apxp)

 

今天元宵节,公司四点下班,大家元宵节快乐!!!

Android studio 单元测试

Android studio 单元测试

Android studio 本身提供了测试功能,不需要再配置文件配置

<instrumentation
   android:name="android.test.InstrumentationTestRunner"
   android:targetPackage=""

AS 创建的工程的 src 目录下会自动生成有一个测试类,我们可自己新建一个测试类

package com.zaizai.sqlite;

import com.zaizai.sqlite.damin.Person;
import com.zaizai.sqlite.dao.PersonDao;

/**
 * Created by AnJie on 2015/10/8.
 */
public class Test extends ApplicationTest {
    /*android studo 对于测试是默认支持的,所以不用再配置文件中增加诶之*/

    public void testPersonDao(){
        /*数据库什么时候创建*/
        PersonSQLiteOpenHelper openHelper = new PersonSQLiteOpenHelper(getContext());
        openHelper.getWritableDatabase();
        openHelper.close();
    }

    public void testInsert(){
        PersonDao personDao = new PersonDao(this.getContext());
        personDao.inset(new Person(3,"王五",88));
    }



}

然后配置启动项

首先点击”Run-> Edit Configurations-->Defaults -->Android Tests

可以按包配置,module 配置。类配置,方法配置,这里选择按包,

然后点击运行即可

android studio 单元测试生成测试报告以及生成单元测试代码覆盖率报告

android studio 单元测试生成测试报告以及生成单元测试代码覆盖率报告

如果要计算AndroidTest的覆盖率,只需要在模块的build.gradle里的buildTypes闭包里添加开启覆盖率统计即可。

debug {
  • testCoverageEnabled true
  • }

    这个功能貌似在android 5.0以上可以,我试过两个5.0以下的手机,覆盖率都是零。
    要生成报告,可以在AS里找到Gradle菜单,找到verification ->createDebugCoverageReport,右键运行这个task就可以了。

    会生成自动化单元测试报告和一个ec文件。ec文件将用于生成单元测试代码覆盖率报告。

    很简单,首先我们将这个文件存放到build/outputs/code-coverage/connected下,然后在build.gradle加入如下语句:

    apply plugin: 'jacoco'
    def coverageSourceDirs = [
            '../app/src/main/java'
    ]

    task jacocoTestReport(type: JacocoReport) {
        group = "Reporting"
        description = "Generate Jacoco coverage reports after running tests."
        reports {
            xml.enabled = true
            html.enabled = true
        }
        classDirectories = fileTree(
                dir: './build/intermediates/classes/debug',
                excludes: ['**/R*.class',
                           '**/*$InjectAdapter.class',
                           '**/*$ModuleAdapter.class',
                           '**/*$ViewInjector*.class'
                ])
        sourceDirectories = files(coverageSourceDirs)
        executionData = files("$buildDir/outputs/code-coverage/connected/coverage.ec")

        doFirst {
            new File("$buildDir/intermediates/classes/").eachFileRecurse { file ->
                if (file.name.contains('

    ', '$'))
                }
            }
        }
    }

    然后我们执行gradle jacocoTestReport 生成报告,报告的存放目录为项目根目录下的 build/reports/jacoco/jacocoTestReport目录下:
     


     

    关于【Android Studio 中单元测试生成测试报告】android 单元测试教程的问题我们已经讲解完毕,感谢您的阅读,如果还想了解更多关于Android Studio 中的 Kotest 单元测试实现、Android studio 使用心得 (八)---- 测试程序单元测试、Android studio 单元测试、android studio 单元测试生成测试报告以及生成单元测试代码覆盖率报告等相关内容,可以在本站寻找。

    本文标签:

    上一篇正确配置Android Studio和Flutter、Dart插件版本 Start a new Flutter project(androidstudio安装flutter插件)

    下一篇收藏的链接-Android Studio(收藏的链接怎么放到桌面)