TestNG框架 在AndroidStudio上部署真机测试
本文代码参考链接:https://blog.csdn.net/weixin_39451323/article/details/114030393
testNG github 链接:https://github.com/LemonadeLabInc/android-testng
1.环境配置
1.1 目录结构
在android手机上运行用例,需要将test代码放在androidTest文件夹下(单元测试则放在test文件夹下),否则无法运行。
- 目录结构
1.2 gradle下载
- gradle 下载
新建工程后,默认会下载最高版本gradle。gradle下载慢或者下载不下来,可进入官网链接,等待AndroidStudio出现下载链接,用迅雷极速下载。
再将文件解压到相应位置,文件结构如下图所示(图中一长串英文字母和数字的组合是androidStudio自动生成的):
- gradle版本与gradle build插件version对应关系
下载多个版本gradle,经过反复测试,gradle版本5.4.1
和com.android.tools.build:gradle:3.5.4
,使用testNG进行真机测试都没问题,本文中用gradle-4.10.3-all.zip
,插件版本com.android.tools.build:gradle:3.3.3
。
1.3 gradle配置
gradle-wrapper.properties
#Sat Feb 20 11:21:06 CST 2021
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
#distributionUrl=https\://services.gradle.org/distributions/gradle-6.5-bin.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-4.10.3-all.zip
build.gradle(:app)
plugins {
id 'com.android.application'
}
android {
compileSdkVersion 30
buildToolsVersion "30.0.3"
defaultConfig {
applicationId "yuyang.example.hellowng"
minSdkVersion 16
targetSdkVersion 30
versionCode 1
versionName "1.0"
// testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
testInstrumentationRunner 'de.lemona.android.testng.TestNGRunner'
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}
dependencies {
implementation 'androidx.appcompat:appcompat:1.2.0'
implementation 'com.google.android.material:material:1.3.0'
implementation 'androidx.constraintlayout:constraintlayout:2.0.4'
testImplementation 'junit:junit:4.+'
testImplementation 'org.testng:testng:6.9.6'
// androidTestImplementation 'androidx.test.ext:junit:1.1.2'
implementation 'de.lemona.android:android-testng:1.1.27'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0'
}
build.gradle(:hellowNG)
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
repositories {
google()
jcenter()
maven {
url 'http://dl.bintray.com/lemonade/maven'
}
}
dependencies {
classpath "com.android.tools.build:gradle:3.3.3"
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
allprojects {
repositories {
google()
jcenter()
maven {
url 'http://dl.bintray.com/lemonade/maven'
}
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
注: build.gradle(:app)
中'de.lemona.android:android-testng:1.1.27'
(.
代表页面中只有一个链接,:
代表有多个),在google()或jcenter()中下载不到,所以需要在** build.gradle(:heellowNG)
中添加地址'http://dl.bintray.com/lemonade/maven'
。
testNG依赖链接
如maven-metadata.xml
所示,最新版本为1.1.27
<?xml version="1.0" encoding="UTF-8"?>
<metadata>
<groupId>de.lemona.android</groupId>
<artifactId>android-testng</artifactId>
<version>1.1.27</version>
<versioning>
<latest>1.1.27</latest>
<release>1.1.27</release>
<versions>
<version>1.0.2</version>
<version>1.0.5</version>
<version>1.0.20</version>
<version>1.0.21</version>
<version>1.1.22</version>
<version>1.1.23</version>
<version>1.1.25</version>
<version>1.1.26</version>
<version>1.1.27</version>
</versions>
<lastUpdated>20160803102016</lastUpdated>
</versioning>
</metadata>
1.4 离线配置tesng
由于'http://dl.bintray.com/lemonade/maven'
的资源不开放了,需要使用之前离线下载的,方法如下:
-
在
androidTest\java
路径下新建文件夹libs
,将2个离线包.jar文件拷贝到文件夹。
-
在
build.gradle(:app)
中加入以下两行代码:
还需要在Android Studio 显示的jar上右击鼠标 Add as Library
dependencies {
implementation files('src\\androidTest\\java\\libs\\testng-6.8.21.jar')
implementation files('src\\androidTest\\java\\libs\\android-testng-1.1.27.jar')
//或者下面的写法
androidTestImplementation files('src\\androidTest\\java\\libs\\testng-6.8.21.jar')
androidTestImplementation files('src\\androidTest\\java\\libs\\android-testng-1.1.27.jar')
}
Add as Library:
备注:jar包参考路径:C:\Users\yuyang2\.gradle\caches\modules-2\files-2.1
2. 运行测试用例
- 配置
testng.xml
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="testNG Suite" >
<test name="ThreadTest3">
<classes name="3">
<class name="yuyang.example.hellowng.SuiteTest1"></class>
</classes>
</test>
</suite>
在AndroidStudio终端输入gradlew cAT
(代表使用gradle
w’rapper 进行connect Android Test )
-SuiteTest1.java
package yuyang.example.hellowng;
import java.lang.reflect.Method;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
public class SuiteTest1 {
@Test(dataProvider = "dataInfoMethod", invocationCount = 10,threadPoolSize = 4)
public void userInfo1(String name, String id){
System.out.println(name+"登录成功!" + "编号:"+id +" Current Thread id: "+Thread.currentThread().getId());
}
@Test(dataProvider = "dataInfoMethod")
public void userInfo2(String name, String id){
System.out.println(name+"登录成功!" + "编号:"+id );
}
@DataProvider(name = "dataInfoMethod")
public Object[][] dataProviderMethod(Method method){
if (method.getName().equals("userInfo1")){
return new Object[][]{{"Allen", "001"}};
}
else if (method.getName().equals("userInfo2")){
return new Object[][]{{"Mary", "002"}};
}
return null;
}
}
运行结果:
在真机运行过程中可查看l到og:
到此成功!开启自动化测试、单元测试、测试开发之旅吧!