成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

跟著小白一起學鴻蒙(三)—手寫一個測試用例

系統 OpenHarmony
這一節我們著重查看如何編寫測試套件,編譯并測試。

??想了解更多關于開源的內容,請訪問:??

??51CTO 開源基礎軟件社區??

??https://ost.51cto.com??

開源鴻蒙測試初識

這一節我們著重查看如何編寫測試套件,編譯并測試。

1、目錄結構

//目錄位置:[鴻蒙代碼]/test
.
├── arkXtest //js測試框架和ui測試框架
├── jsunit
└── uitest
├── developertest //開發測試組件
├── aw
├── config
├── examples
├── src
└── third_party
├── wukong //穩定性測試工具,冒煙測試
├── common
├── component_event
├── input_factory
├── report
├── shell_command
└── test_flow
├── xdevice //測試框架核心,提供執行用例的相關服務
├── BUILD.gn
├── extension
├── src
└── xts //兼容性測試套件
├── acts //應用兼容性測試套件
├── dcts //分布式兼容性測試套件
├── hats //硬件兼容性測試套件
└── tools

2、測試套件結構

我們選取比較簡單的應用兼容性測試套件為例:

.
├── BUILD.gn //編譯腳本
├── comm.gni //編譯配置
├── src
├── ActsLibuvTestSuite.cpp //具體測試套件源文件
├── ActsLibuvTestSuite.h //具體測試套件頭文件
└── Test.json //測試套件執行配置
  • 測試套件編譯腳本-BUILD.gnimport("http://test/xts/tools/build/suite.gni")。
? import("http://test/xts/acts/graphic/libuv/comm.gni")
ohos_moduletest_suite("ActsLibuvTestSuite”) {
sources = [
"src/ActsLibuvTestSuite.cpp",
]
include_dirs = [ "http://test/xts/acts/graphic/libuv/src" ]
cflags = [ "-Wno-error" ]}

BUILD.gn主要編寫格式如下:

sources = [
"源文件",
]
include_dirs = [
"頭文件目錄",
],
deps = [
"依賴庫路徑:依賴庫名稱",
]
configs = [
"配置文件路徑:配置文件名稱"
]

具體解釋如下:

  • sources:對應的就是需要編譯的源文件。
  • include_dirs:對應的就是編譯中的頭文件的路徑。
  • deps:對應的此程序依賴的其他的庫,比如引入hilog,則增加 “//base/hiviewdfx/hilog/interfaces/native/innerkits:libhilog”。
  • configs: 對應編譯的flags或者宏定義,如:
  • config("XX_config") {
    cflags_cc = [
    "-Wno-conversion",
    "-Wno-unused-function",
    ]
    defines = deqp_common_defines
    defines += [
    "_XOPEN_SOURCE=600"
    ]
    }

編譯配置文件-comm.gni。

import("http://test/xts/tools/build/suite.gni")
common_include = [
"http://test/xts/acts/graphic/libuv/src",
]
common_depends = [
"http://third_party/libuv:uv_static",
]

編譯配置文件可以將共同的BUILD.gn內容放置在此,供其他gn文件或者gni文件使用。

具體測試套件源文件:

#include <gtest/gtest.h>
#include "ActsLibuvTestSuite.h"
namespace OHOS {
using namespace std;
using namespace testing::ext;
// Preset action of the test suite, which is executed before the first test case
void ActsLibuvTestSuite::SetUpTestCase(void)
{
}
// Test suite cleanup action, which is executed after the last test case
void ActsLibuvTestSuite::TearDownTestCase(void)
{
}
// Preset action of the test case
void ActsLibuvTestSuite::SetUp()
{
}
// Cleanup action of the test case
void ActsLibuvTestSuite::TearDown()
{
}
HWTEST_F(ActsLibuvTestSuite, testLibuvTestCase001, Function | MediumTest | Level2)
{
printf("------start ActsLibuvTestSuite------\n");
EXPECT_TRUE(true);
printf("------end ActsLibuvTestSuite------\n");
}
HWTEST_F(ActsLibuvTestSuite, testLibuvTestCase002, Function | MediumTest | Level2)
{
printf("------start ActsLibuvTestSuite------\n");
EXPECT_TRUE(false);
printf("------end ActsLibuvTestSuite------\n");
}
}

我們選取的此測試套件是模塊測試套件,所以使用gtest測試框架進行測試。

gtest測試框架采用TestSuite + TestCase的組成方式,所以我們定義了ActsLibuvTestSuite作為測試Suite,然后添加兩個testLibuvTestCase001,testLibuvTestCase002作為測試Case。

判斷一個測試是否通過可以用EXPECT_TRUE(true),EXPECT_TRUE(false)進行驗證,其他還可以使用的斷言如下:

  • EXPECT_TRUE(condition)
  • EXPECT_FALSE(condition)
  • EXPECT_EQ(val1, val2)
  • EXPECT_NE(val1, val2)
  • EXPECT_LE(val1, val2)
  • EXPECT_LT(val1, val2)
  • EXPECT_GE(val1, val2)
  • EXPECT_GT(val1, val2)
  • EXPECT_STREQ(val1, val2)
  • EXPECT_STRNE(s1, s2)
  • EXPECT_STRCASEEQ(s1, s2)
  • EXPECT_STRCASENE(s1, s2)
  • EXPECT_FLOAT_EQ(val1, val2)
  • EXPECT_DOUBLE_EQ(val1, val2)

具體測試套件頭文件:

#ifndef LIBUV_TESTCASE_H
#define LIBUV_TESTCASE_H
#include <gtest/gtest.h>
namespace OHOS {
class ActsLibuvTestSuite : public testing::Test {
public:
protected:
// Preset action of the test suite, which is executed before the first test case
static void SetUpTestCase(void);
// Test suite cleanup action, which is executed after the last test case
static void TearDownTestCase(void);
// Preset action of the test case
virtual void SetUp();
// Cleanup action of the test case
virtual void TearDown();
};
} // namespace OHOS

#endif // LIBUV_TESTCASE_H

測試套件執行配置文件:

{
"description": "Config for ActsLibuvTestSuite test cases",
"driver": {
"module-name": "ActsLibuvTestSuite",
"native-test-timeout": "120000",
"native-test-device-path": "/data/local/tmp",
"runtime-hint": "100s",
"type": "CppTest"
},
"kits": [
{
"pre-push" : [
],
"post-push" : [
"chmod -R 777 /data/local/tmp/*"
],
"push": [
"ActsLibuvTestSuite->/data/local/tmp/ActsLibuvTestSuite"
],
"type": "PushKit"
},
{
"type": "ShellKit",
"run-command": [
"remount",
"mkdir /data/test",
"cd /data/local/tmp"
]
}
]
}

測試套件配置文件是伴隨測試套件運行的文件,在執行測試套件的時候,xdevice根據配置文件的具體命令執行測試用例,詳細說明如下:

  • “description”:測試套件的文字說明
  • “driver”: 測試套件執行驅動配置
  • “module-name”: 配置測試套件名稱
  • “native-test-timeout”: 套件超時設置
  • “native-test-device-path”: 套件運行目錄
  • “runtime-hint”: 套件執行時間預估
  • “type”: 套件類型
  • “kits”: 測試套件工具配置
  • “PushKit”:傳送工具
  • “pre-push”:從上位機推送到設備前的準備工作;
  • “push”: 從上位機推送到設備的動作;
  • “post-push”: 上位機推送后需要做的動作;
  • “ShellKit”:運行工具
  • “run-command”: 執行測試套件前需要配置的命令

3、編譯測試套件

上面寫的測試用例需要有一個入口進行加載,在此文章我們選取graphic的gn進行依賴添加路徑:

路徑:test/xts/acts/graphic/BUILD.gn
import("http://build/ohos_var.gni")
group("graphic") {
testonly = true
if (is_standard_system) {
deps = [
"webGL:webGL_hap_test",
"windowStage:ActsWindowStageTest",
"windowstandard:window_hap_test",
#增加下面這行引入依賴
"libuv:ActsLibuvTestSuite",
]
} else {
deps = [
"appaccount:appaccount_hap",
"osaccount:osaccount_hap",
]
}
}

同**《#跟著小白一起學鴻蒙# [一]運行OpenHarmony》**一樣,在鴻蒙代碼根目錄執行以下命令:

./build.sh --product-name rk3568 --gn-args build_xts=true --build-target "acts" --gn-args is_standard_system=true

深入技巧:我們會發現每次編譯都會消耗大量時間,這里我們淺論下鴻蒙的編譯方式。

  1. build.sh: 源碼路徑下的編譯腳本,其主要目標就是找vender目錄和productdefine目錄下對應的編譯目標,然后對其目標進行gn編譯。
  2. gn編譯:根據目標的build.gn文件生成build.ninja文件,總的build.ninja位于out/product目錄下。
  3. ninja:根據目標的build.ninja編譯生成產出問題件。

總結:所以如果不改動gn文件,但是改動源文件或者頭文件的情況下,我們可以不用build.sh腳本生成代碼,而是直接用ninja命令進行編譯,如 ninja -C out/rk3568 uv_static。

4、執行測試套件

同**《#跟著小白一起學鴻蒙# [一]運行OpenHarmony》**一樣,在鴻蒙代碼根目錄/out/rk3568/suites/acts執行以下命令:

//此命令的前提是:
//1, 開發板和上位機進行建立連接,沒有配置網絡的時候建議usb連接
//上位機執行:hdc_std shell (此命令可以進入開發板的shell,進行后續命令輸入)
//2, 開發板的hdcd服務配置完協議類型和端口
//板上執行:param set persist.hdc.mode all
//板上執行:param set persist.hdc.port 10178
//板上執行:pkill hdcd (用來重啟hdcd以便使用新配置)
//3, 開發板配置ip地址,并確認網絡
//板上查看ip地址命令:ifconfig
//如果沒有eth0則需要執行: ifconfig eth0 up
//如果有eth0則可以配置ip地址:ifconfig eth0 192.168.137.105
//檢驗網絡是否通暢:ping 上位機IP地址
python -m xdevice

5、查看測試套件執行結果

在鴻蒙代碼根目錄/out/rk3568/suites/acts/reports內可以看到最新時間戳的目錄即為剛才運行的測試記錄。

.
├── 2022-08-16-14-15-25.zip
├── details_report.html //詳細測試用例
├── log
│ ├── device_hilog_192.168.137.105_10178.log //系統hilog日志
│ └── task_log.log //測試用例輸出日志
├── result
│ └── ActsLibuvTestSuite.xml //測試結果匯總
├── summary.ini
├── summary_report.hash
├── summary_report.html //測試報告大綱
├── summary_report.xml

測試報告。

測試報告詳情。

#跟著小白一起學鴻蒙# [三]手寫一個測試用例-開源基礎軟件社區

??想了解更多關于開源的內容,請訪問:??

??51CTO 開源基礎軟件社區??

??https://ost.51cto.com??。

責任編輯:jianghua 來源: ??51CTO開源基礎軟件社區
相關推薦

2022-12-02 14:20:09

Tetris鴻蒙

2022-11-29 16:35:02

Tetris鴻蒙

2022-09-28 13:57:41

鴻蒙開源

2023-03-30 09:32:27

2022-11-14 17:01:34

游戲開發畫布功能

2022-11-25 16:48:54

鴻蒙Stage HAP

2022-08-29 17:25:19

鴻蒙應用開發

2023-04-04 09:24:11

鴻蒙HiDumper

2022-10-10 14:47:04

藍牙應用鴻蒙

2023-02-27 16:30:32

鴻蒙開源協議分析

2023-03-30 09:19:54

SELinux安全子系統

2022-08-19 19:02:20

開源鴻蒙操作系統

2022-09-30 14:08:26

Hap應用鴻蒙

2023-01-03 15:09:10

鴻蒙常用工具

2022-11-24 14:34:41

Hap程序鴻蒙

2023-03-15 16:19:03

BinderIPC工具

2022-12-06 15:39:16

鴻蒙主干代碼

2022-10-09 15:05:50

NAPI框架鴻蒙

2022-10-20 16:40:16

JS應用控制LED鴻蒙

2022-12-05 15:02:14

鴻蒙用戶鑒權
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 欧美专区日韩 | 国产精品久久久久久久久久东京 | 日韩成人一区 | 欧美黑人激情 | 中文字幕av一区二区三区 | 亚洲精品一区二区三区蜜桃久 | 羞羞视频在线观看网站 | 欧美精品欧美精品系列 | 欧洲妇女成人淫片aaa视频 | 蜜桃毛片 | 日韩视频一区二区三区 | 欧美激情一区二区 | www.日本在线观看 | www日本高清 | 天天躁日日躁狠狠很躁 | 91极品欧美视频 | 国产成人免费视频网站高清观看视频 | 日韩另类| 在线观看国产wwwa级羞羞视频 | 琪琪午夜伦伦电影福利片 | 日韩精品免费在线观看 | 五月综合色啪 | 精品一区二区三区日本 | 91免费看片神器 | 午夜精品三区 | 青青草在线视频免费观看 | 久久夜视频| 午夜在线视频一区二区三区 | 日本三级在线视频 | 亚洲国产成人精品女人 | 中文字幕第一页在线 | 黑人巨大精品欧美一区二区免费 | 国产精品揄拍一区二区 | 日本精品一区二区三区视频 | 久久精品日产第一区二区三区 | 日韩国产黄色片 | 无码一区二区三区视频 | 欧美激情国产精品 | 夜夜爽99久久国产综合精品女不卡 | 成年人网站免费 | 久久久久久久国产 |