Skip to main content

ohos-test-arkruntime-interop-testing

Guide for adding and maintaining ArkTS <-> JS/TS interoperability tests in ArkCompiler. 触发场景:在 plugins/ets/tests/interop_js/tests/ 目录下创建新的 ArkTS 与 JS/TS 互操作(Interop)测试用例、调试/维护已有 Interop 测试、编写 C++ 运行器(GTest runner)或声明文件(.d.ets)时。

Quellinformationen

Repository
openharmonyinsight/openharmony-skills
Letzte Quellaktivität
24. Juni 2026 um 06:58
Erkannte Sprache von SKILL.md
Englisch
Sterne
34
Forks
7

Installationsoptionen

Standardmäßig ist der Prompt ausgewählt, der zuerst die Quelle prüft. Sie können zu einem direkten Befehl wechseln oder eine lokale Kopie herunterladen.

Quelldateien prüfen

Lesen Sie SKILL.md und alle von SkillsMP angezeigten Begleitdateien, bevor Sie sich für eine Installation entscheiden.

Datei-Explorer
9 Dateien

SKILL.md wird angezeigt

SKILL.md
Quellanweisungen · Schreibgeschützte Vorschau
name
ohos-test-arkruntime-interop-testing
description
Guide for adding and maintaining ArkTS <-> JS/TS interoperability tests in ArkCompiler. 触发场景:在 plugins/ets/tests/interop_js/tests/ 目录下创建新的 ArkTS 与 JS/TS 互操作(Interop)测试用例、调试/维护已有 Interop 测试、编写 C++ 运行器(GTest runner)或声明文件(.d.ets)时。
metadata
{"author":"openharmony","scope":"domain","stage":"testing","domain":"arkruntime","capability":"interop-testing","version":"1.0.0","status":"production","tags":["arkruntime","interop","testing","test-cases"]}
# ETS Interop Testing This skill provides a structured workflow and templates for creating comprehensive interop tests between ArkTS (ETS) and JavaScript/TypeScript. ## Core Concepts Interop tests typically involve three layers: 1. **C++ Runner**: GTest-based entry point that manages the VM lifecycle. 2. **ArkTS (ETS) Logic**: The main test code written in ArkTS. 3. **JS/TS Module**: The JavaScript or TypeScript code being called or calling into ArkTS. ## Directory Structure A typical test case directory (e.g., `plugins/ets/tests/interop_js/tests/my_test/`) should contain: - `CMakeLists.txt`: Build configuration. - `arktsconfig.in.json`: ArkTS compiler configuration with dependencies. - `my_test.cpp`: C++ GTest runner. - `my_test.ets`: ArkTS test logic. - `my_test.ts` or `my_test.js`: JS/TS side of interop. - `my_test.d.ets`: (Optional) Declaration file for JS/TS exports. ## Workflow: Adding a New Test Case ### 1. Initialize Directory Create a new unique directory in `plugins/ets/tests/interop_js/tests/`. ### 2. Define JS/TS Interface Write your JS/TS code in a `.ts` or `.js` file. Use `assets/interop_js.ts.template` as a starting point. ### 3. Create ArkTS Declarations If your JS/TS code exports functions/classes, create a `.d.ets` file to declare them for ArkTS. Template: `assets/interop_decl.d.ets.template`. ### 4. Implement ArkTS Test Logic Write the test logic in ArkTS. This logic should return `true` on success. Template: `assets/interop_test.ets.template`. ### 5. Configure Build and Compiler - **arktsconfig.in.json**: Map the JS/TS module to its `.d.ets` declaration. Template: `assets/arktsconfig.in.json.template`. - **CMakeLists.txt**: Use the `panda_ets_interop_js_gtest` macro. Template: `assets/CMakeLists.txt.template`. ### 6. Create C++ Runner Inherit from `EtsInteropTest` and use `CallEtsFunction` to trigger your test. Template: `assets/test_runner.cpp.template`. ## Verification and Best Practices - **Unique Naming**: Ensure your target name in `CMakeLists.txt` and directory name are unique to avoid collisions. - **Isolation**: Each test should be self-contained in its directory. - **Error Handling**: Prefer returning `boolean` from ETS or throwing exceptions that C++ can catch. - **Formatting**: Always run `bash code-format.sh format-changed` after adding new files. ## References - See `ohos-dev-arkruntime-interop-development` for architectural details. - Root `CMakeLists.txt` in `interop_js/tests/` automatically includes subdirectories via `SUBDIRLIST`.
Auf GitHub ansehen