唯独尽管如此,下关沱茶里的烟香味如故存在,于是厂里的
技术人士就起来琢磨,这烟香味究竟从 何而来,怎么样发生?

3.布局扶助单元测试的工程

在写测试此前,让大家做下简单的自我批评,确保工程安排不错。

首先,确认在Build Variants窗口内的Test Artifact中挑选了”Unit
Tests”。

科学 1

下一场,在工程的src文本夹内创建testtest/java文件夹。需要专注的是,你不可能在Android视图下进展这么些操作,要么在系统的文件管理器内创立,要么在工程窗口左上方点击下拉菜单接纳Project视图。最后的工程社团应当是如此的:

科学 2

(在codelab的多余部分,你可以再次来到继续采用Android工程视图)

末段,打开工程的build.gradle(Module:app)文件,添加JUnit4依赖,点击Gradle
sync
按钮。

build.gradle

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:22.1.1'
    testCompile 'junit:junit:4.12'
}

当您一块Gradle配置时,可能需要联网下载JUnit倚重。


无烟不下关”这句话在熟悉下关沱茶的老茶客中流传甚广,甚至很多茶客就一见钟情于这股子“烟香”,
成为下关沱茶的味觉识别标志。很长日子里,我们都相信,烟味来源于毛茶初
制过程。

1.概述

在那多少个codelab中,你将学习怎么在Android
Studio中布置工程用于测试,在付出机器上编制并运行单元测试,以及哪些在二哥大上做效能UI测试。

您会学到什么

  • 履新包含JUnit和Android Testing Support Library的Gradle构建文件
  • 编制运行在本机Java虚拟机上的单元测试
  • 编辑运行在手机仍旧虚拟机上的Espresso测试

你需要如何


分明,下关风大,空气湿度低,有利于茶叶的很快冷却和平淡,那个环节对茶叶鲜爽度的晋级很有救助,再增长沱茶的平抑的紧结度高,也可以最大限度的保持茶叶的鲜爽度和芬芳。

7.为app添加简单的相互

科学 3

在动用Espresso进行UI测试前,让我们为app添加一些Views和省略的互动。我们使用一个用户可以输入名字的EditText,欢迎用户的Button和用来出口的TextView。打开res/layout/activity_main.xml,粘贴如下代码:
activity_main.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
    android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity">

    <TextView
        android:id="@+id/textView"
        android:text="@string/hello_world" android:layout_width="wrap_content"
        android:layout_height="wrap_content" />
    <EditText
        android:hint="Enter your name here"
        android:id="@+id/editText"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@+id/textView"/>
    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Say hello!"
        android:layout_below="@+id/editText"
        android:onClick="sayHello"/>
</RelativeLayout>

还索要在MainActivity.java中添加onClick handler:

MainActivity.java

public void sayHello(View v){
    TextView textView = (TextView) findViewById(R.id.textView);
    EditText editText = (EditText) findViewById(R.id.editText);
    textView.setText("Hello, " + editText.getText().toString() + "!");
}

现在可以运行app并认可一切工作例行。在点击Run按钮在此以前,确认你的Run
Configuration
并未安装为运行测试。如需变更,点击下拉选项,接纳app


▲图为“张掖藏家”的下关沱茶的底细图  

9.祝贺

咱俩期待您能欢喜本篇教程,并且先导出手测试你的应用程序。接着你可以学学如下内容:

(完)

▲图为“固原藏家”的下关沱茶  

6.安排辅助Instrumentation测试的工程

尽管如此在Android框架内补助运行instrumentation测试,然则目前支付中央紧要会聚在刚刚揭橥的作为Android
Testing Support
Library
一对的新的AndroidJUnitRunner。测试库包含Espresso,用于运行效果UI测试的框架。让大家由此编制build.gradle的连带部分来把它们添加进我们的工程。

build.gradle

apply plugin: 'com.android.application'

android {
    compileSdkVersion 22
    buildToolsVersion "22.0.1"

    defaultConfig {
        applicationId "com.example.testing.testingexample"
        minSdkVersion 15
        targetSdkVersion 22
        versionCode 1
        versionName "1.0"

        //ADD THIS LINE:
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }

    //ADD THESE LINES:
    packagingOptions {
        exclude 'LICENSE.txt'
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:22.0.0' //← MAKE SURE IT’S 22.0.0
    testCompile 'junit:junit:4.12'

    //ADD THESE LINES:
    androidTestCompile 'com.android.support.test:runner:0.2'
    androidTestCompile 'com.android.support.test:rules:0.2'
    androidTestCompile 'com.android.support.test.espresso:espresso-core:2.1'
}

重要:由于有些凭借版本争执,你需要认同com.android.support:appcompat-v7库的版本号是22.0.0,像下边的代码片段一样。
除此以外,Android
Studio可能会唤醒你Build Tools 22.0.1从不安装。你应该接受修复提出,Studio会为您安装Build
Tools或者在build.gradle中把这行修改成已经安装在您电脑的本子。

下边的做事成功后,在Build Variants窗口内切换成Android
Instrumentation Tests
,你的工程应该自行同步。假使没有,点击Gradle
sync
按钮。


新料也是出缕缕烟香的,二零零五年往日,下关茶厂是江苏省茶行业的百般,实力最充实,所有的原材料都有相对定价权,厂里多年来形成了一种观念,原料
仓库必须有最少5000吨以上的库存。

2.创办新的Android Studio工程

假要是第一次启动Android Studio,从欢迎页选用“Start a new Android
Studio project
”。假使已经打开了一个工程,接纳File>New>New
Project…

Create new project”向导会指导整个经过,在率先页输入如下内容:

Setting Value
Application Name TestingExample
Company demain testing.example.com

这样会保证你的代码同codelab讲解的情节有所同样的命名。其他的选项都安装为默认,一路点击Next以至工程创建完毕。

点击Run按钮检查app是否运行如常,要么从模拟器列表中选拔一个启动,要么确认开启了debug情势的设施经过USB同电脑科学连接。

app近来并未做任何事情,可是屏幕上相应显示“Hello world!”和app的名字。

科学 4

时常被问及的问题


这也和地域性的 小环境有关,就像景阳春酒出了水井坊镇就出缕缕这个味道。

本篇教程翻译自Google I/O
2015
中有关测试的codelab,明白正确上网的同室请点击这里阅读:Unit
and UI Testing in Android
Studio
。能力有限,如有翻译错误,请批评指正。如需转载,请表明出处。
Github下载测试源码

价值观的烟香淡了无数,要求大家必然要做出非常味道来,但新料确实做不出去。”

4.创设首个单元测试

前日,万事俱备,让我们起先写第一个测试呢。首先,制造一个分外简单的被测类:Calculator类。

科学 5

接下来,向类中添加一些主干的算术运算方法,比如加法和减法。将下列代码复制到编辑器中。不用担心其实的落实,暂时让拥有的点子重返0。

Calculator.java

package com.example.testing.testingexample;

public class Calculator {

    public double sum(double a, double b){
        return 0;
    }

    public double substract(double a, double b){
        return 0;
    }

    public double divide(double a, double b){
        return 0;
    }

    public double multiply(double a, double b){
        return 0;
    }
}

Android
Studio提供了一个神速创立测试类的措施。只需在编辑器内右键点击Calculator类的宣示,选拔Go
to > Test
,然后“Create a new test…”

科学 6

在开拓的对话窗口中,采取JUnit4和”setUp/@Before“,同时为拥有的总计器运算生成测试方法。

科学 7

那般,就会在正确的文本夹内(app/src/test/java/com/example/testing/testingexample)变更测试类框架,在框架内填入测试方法即可。下边是一个演示:

Calculator.java

package com.example.testing.testingexample;

import org.junit.Before;
import org.junit.Test;

import static org.junit.Assert.*;

public class CalculatorTest {

    private Calculator mCalculator;

    @Before
    public void setUp() throws Exception {
        mCalculator = new Calculator();
    }

    @Test
    public void testSum() throws Exception {
        //expected: 6, sum of 1 and 5
        assertEquals(6d, mCalculator.sum(1d, 5d), 0);
    }

    @Test
    public void testSubstract() throws Exception {
        assertEquals(1d, mCalculator.substract(5d, 4d), 0);
    }

    @Test
    public void testDivide() throws Exception {
        assertEquals(4d, mCalculator.divide(20d, 5d), 0);
    }

    @Test
    public void testMultiply() throws Exception {
        assertEquals(10d, mCalculator.multiply(2d, 5d), 0);
    }
}

请将代码复制到编辑器或者应用JUnit框架提供的断言来编排自己的测试。


唯独,发展到现在,伊春茶原料价格上涨,毛茶初制工艺也大大提升了,有了正规的初制所,茶农家里也存在专用的杀青灶,火烟都通过高高的烟囱排到空中,茶叶被污染的几率很低。

8.创制并运行Espresso测试

科学 8

在工程的一体化视图上,找到以(androidTest)后缀结尾的包名并创设一个新的Java类。能够将它取名为MainActivityInstrumentationTest,将如下代码粘贴过去。

*** MainActivityInstrumentationTest.java*

package com.example.testing.testingexample;

import android.support.test.InstrumentationRegistry;
import android.support.test.espresso.action.ViewActions;
import android.support.test.rule.ActivityTestRule;
import android.support.test.runner.AndroidJUnit4;
import android.test.ActivityInstrumentationTestCase2;
import android.test.suitebuilder.annotation.LargeTest;

import org.junit.After;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;

import static android.support.test.espresso.Espresso.onView;
import static android.support.test.espresso.action.ViewActions.click;
import static android.support.test.espresso.action.ViewActions.closeSoftKeyboard;
import static android.support.test.espresso.action.ViewActions.typeText;
import static android.support.test.espresso.assertion.ViewAssertions.matches;
import static android.support.test.espresso.matcher.ViewMatchers.withId;
import static android.support.test.espresso.matcher.ViewMatchers.withText;

@RunWith(AndroidJUnit4.class)
@LargeTest
public class MainActivityInstrumentationTest {

    private static final String STRING_TO_BE_TYPED = "Peter";

    @Rule
    public ActivityTestRule<MainActivity> mActivityRule = new ActivityTestRule<>(
        MainActivity.class);

    @Test
    public void sayHello(){
        onView(withId(R.id.editText)).perform(typeText(STRING_TO_BE_TYPED), closeSoftKeyboard()); //line 1

        onView(withText("Say hello!")).perform(click()); //line 2

        String expectedText = "Hello, " + STRING_TO_BE_TYPED + "!";
        onView(withId(R.id.textView)).check(matches(withText(expectedText))); //line 3
    }

}

测试类通过AndroidJUnitRunner运行,并执行sayHello()方法。上面将逐行解释都做了什么样:

  • 1.首先,找到ID为editText的view,输入Peter,然后关门键盘;
  • 2.接下来,点击Say hello!的View,大家并未在布局的XML中为那个Button设置id,因而,通过寻找它上边的文字来找到它;
  • 3.最后,将TextView上的文本同预期结果相相比,假如相同则测试通过;

您也足以右键点击域名运行测试,拔取Run>MainActivityInstrume…(第二个带Android图标的)

科学 9

如此这般就会在模拟器或者连续的装置上运行测试,你可以在二弟大屏幕上见到被实践的动作(比如在EditText上打字)。最后会在Android
Studio输出通过和破产的测试结果。

Github下载测试源码


陈辉解释,这首先与下关茶厂一级的拼配技
术有关,其次,与下关的气象条件有关。

5.运转单元测试

到头来到运行测试的时候了!右键点击CalculatorTest类,选择Run >
CalculatorTest
。也可以通过命令行运行测试,在工程目录内输入:

./gradlew test

不顾运行测试,都应该看到输出突显4个测试都失利了。这是意料的结果,因为大家还尚无实现运算操作。

科学 10

让大家修改Calculator类中的sum(double a, double b)艺术重临一个不易的结果,重新运行测试。你应有看到4个测试中的3个破产了。

Calculator.java

public double sum(double a, double b){
    return a + b;
}

用作练兵,你可以实现多余的法门使拥有的测试通过。

兴许您曾经注意到了Android
Studio平素不曾让你总是装置或者启动模拟器来运转测试。这是因为,位于src/tests目录下的测试是运行在该地电脑Java虚拟机上的单元测试。编写测试,实现效益使测试通过,然后再添加更多的测试…这种工作方法使很快迭代成为可能,咱们称为测试驱动开发
值得注意的是,当在该地运行测试时,Gradle为您在环境变量中提供了蕴藏Android框架的android.jar包。可是它们效用不完整(所以,打个比方,你不可以仅仅调用Activity的主意并愿意它们生效)。推荐使用Mockito等mocking框架来mock你需要运用的任何Android方法。对于运行在设施上,并充分利用Android框架的测试,请继续读书本篇教程的下个部分。


烟香更侧重于味觉上的感官,而嗅觉上的感到绝对较弱,这实际上也是烟现香和烟薰的距离。

目录


幸好因为在下关的特种环境中,以及手手相传的传统工艺,培养了下关沱茶的力不从心复制的超常规香气和口感。

海拔相对高的地带,紫外线更强,晒青茶的太阳味就更重,这是茶叶本身就带有的意味,茶叶经过存放,青味退去,其他香气下降,烟香味就更优异。

▲下关沱茶

▲图为“双鸭山藏家”的下关沱茶的底细图  

只有下关能出这些味道,同样的原材料,放在县城、百色摆放,烟香都是有差距的,因为这一个地点的氛围湿度都比下关大,湿度大,氧化速度更快。

▲辽宁下关沱茶公司大门

▲图为“哈密藏家”的下关沱茶的开汤图  

下关沱茶公司公司生产技术部总监陈辉认为,对“烟香”,尽管还一贯不谨言慎行的正确性检测手段来作为理论按照,但是一家之言,听之也不妨。

小说来源工号:三门峡藏家。由国家高级评茶师、世界茶文化沟通协会海南分会会长、“安康教父”白水清弟子鲁文锋先生主创。

老料用了补新料,一般要3年才能一挥而就一轮的大循环,这样的观念令厂里富有的原材料都是因而两三年以上的寄放后才进入精制环节,无意中在原材料仓储过程中让烟香味可以占上风。

他们以为所谓“烟香”就是“太阳味”的转发,烟香的发出需要毛茶经太阳强紫外线的照射,然后再在周旋低温、干燥的条件中存放两三年以上。

下关茶厂的原料一半之上来自防城港地区,中卫海拔都在1300米以上,许多茶园海拔在1700米左右。

陈辉说起,“在原材料缺少的年份,大家也尝尝增添新料比
例做茶,利兹、黑龙江这里的老客户都意识出来,

开首茶叶不值钱,茶农生活劳苦,做饭、炒茶都用一个锅,烧柴禾的
烟味很容易被茶叶吸收。

这就是说,下关沱茶多年来说,滋味浓密、高香的窍门是何许呢?