Flutter Jira集成插件jira_teko_flutter的使用

Flutter Jira 集成插件 jira_teko_flutter 的使用

简介

本库可用于将本地测试用例推送到 Jira Teko 项目中。

设置

在使用此库之后,您必须从 pub.dev 安装库 <code>junitreport</code>

dart pub global activate junitreport

在项目中创建文件 .env

JIRA_USER_NAME=您的 Jira 用户名
JIRA_PASSWORD=您的 Jira 密码
JIRA_ISSUES=issue1,issue2,...

在项目的 test 文件夹中创建文件 jira.dart

jira.dart 文件中设置您的 Jira 项目信息和 Jira Teko 账户信息:

import 'package:jira_teko_flutter/jira_teko_flutter.dart'
    show JiraTekoProjectInfo, JiraTekoFlutter, JiraTekoRunnerOption, TestCaseStatus;
import 'package:jira_teko_flutter/src/helpers/read_file_env.dart' as read_env;

void main() async {
  /// 使用推送测试到 Jira
  ///
  /// 例如:您正在测试问题 P365MOB-434 并希望将其推送到 Jira。
  /// * 将 'P365MOB-434' 添加到问题列表:issues = ['P365MOB-434']
  /// * 并运行文件:dart test/jira.dart
  /// * 所有结果测试用例将写入文件 export_result_test.json
  ///
  /// ** 注意:当您提交代码时,请确保 issues 为空。

  /// 使用 .env 文件设置用户名、密码、问题
  final Map<String, String> dataEnv = await read_env.readFileEnv('.env');

  final List<String> issues = (dataEnv["JIRA_ISSUES"] ?? "").split(",");

  JiraTekoFlutter.setProjectInfo(
    JiraTekoProjectInfo(
      scheme: 'https',
      host: 'jira.teko.vn',
      jiraUserName: dataEnv['JIRA_USER_NAME'] ?? '',

      /// 您的 Jira 用户名
      /// ** 注意:当您提交代码时,请确保 jiraPassword 为空。
      jiraPassword: dataEnv['JIRA_PASSWORD'] ?? '',

      /// 您的 Jira 密码
      /// ** 注意:当您提交代码时,请确保 projectKey 为空。
      projectKey: '', // 您的项目键
      projectId: 12345, // 您的项目 ID
      folder: '/HN1234/abc/xyz/', // 特定重定向 URL
    ),
  );
  JiraTekoFlutter.setJiraOptions(
    JiraTekoRunnerOption(
      statusTestCase: TestCaseStatus.draft, /// 当创建测试用例时,设置其默认状态(默认:草稿)
      createCycle: true, /// 自动创建测试周期(默认:true)
    ),
  );

  final JiraTekoFlutter jiraTekoFlutter = JiraTekoFlutter(
    issues: issues,
  );
  jiraTekoFlutter.run();
}

运行

通过运行以下命令:

dart run test/jira.dart

它将运行所有与 .env 文件中声明的问题列表相关的测试用例。

在文件 _test.dart 中:

/// 测试标题
/// 名称: 您的任务名称
/// 目标:
/// 前提条件:
/// Confluence 链接:
/// 文件夹:
/// 网页链接:
/// 测试脚本:
void main() {
  group('组名称:', () {
    test("测试 1", () async {});

    test('测试 2', () async {});

    test('测试 3', () async {});
  });
}

结果将导出到 test 文件夹中的 export_result_all_test.json 文件中。

{
  "您的任务名称": [
    {
      "名称": "组名称: 测试 1",
      "状态": "通过",
      "ID": 1029703
    },
    {
      "名称": "组名称: 测试 2",
      "状态": "通过",
      "ID": 1029703
    },
    {
      "名称": "组名称: 测试 3",
      "状态": "通过",
      "ID": 1029703
    }
  ]
}

更多关于Flutter Jira集成插件jira_teko_flutter的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter Jira集成插件jira_teko_flutter的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,以下是如何在Flutter项目中集成并使用jira_teko_flutter插件的一个基本示例。请注意,jira_teko_flutter插件的具体API和功能可能会根据版本的不同而有所变化,因此请参考最新的官方文档以获取最准确的信息。

首先,确保你已经在Flutter项目中添加了jira_teko_flutter依赖。打开你的pubspec.yaml文件,并添加以下依赖:

dependencies:
  flutter:
    sdk: flutter
  jira_teko_flutter: ^最新版本号  # 请替换为实际的最新版本号

然后,运行flutter pub get以获取依赖。

接下来,你需要在Flutter应用中配置和使用这个插件。以下是一个简单的示例,展示了如何初始化插件并进行基本的API调用(假设插件支持这些功能)。请注意,实际使用时需要根据插件提供的API文档进行调整。

import 'package:flutter/material.dart';
import 'package:jira_teko_flutter/jira_teko_flutter.dart'; // 导入插件

void main() {
  runApp(MyApp());
}

class MyApp extends StatefulWidget {
  @override
  _MyAppState createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  JiraClient? _jiraClient;

  @override
  void initState() {
    super.initState();
    // 初始化JiraClient,这里需要你的Jira实例的URL和API Token
    String jiraUrl = 'https://your-jira-instance.atlassian.net';
    String apiToken = 'your-api-token';
    _jiraClient = JiraClient(baseUrl: jiraUrl, apiToken: apiToken);
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Jira Integration Demo'),
        ),
        body: Center(
          child: ElevatedButton(
            onPressed: () async {
              if (_jiraClient != null) {
                try {
                  // 示例:获取当前用户信息
                  User? user = await _jiraClient!.getUserInfo();
                  if (user != null) {
                    ScaffoldMessenger.of(context).showSnackBar(
                      SnackBar(content: Text('User: ${user.displayName}')),
                    );
                  }
                } catch (e) {
                  print('Error fetching user info: $e');
                  ScaffoldMessenger.of(context).showSnackBar(
                    SnackBar(content: Text('Error: ${e.message}')),
                  );
                }
              }
            },
            child: Text('Get User Info'),
          ),
        ),
      ),
    );
  }
}

// 假设JiraClient和User类如下(实际使用时请参考插件文档)
class JiraClient {
  final String baseUrl;
  final String apiToken;

  JiraClient({required this.baseUrl, required this.apiToken});

  Future<User?> getUserInfo() async {
    // 这里应该是实际的API调用逻辑,使用http或其他网络库
    // 例如:
    // final response = await http.get('$baseUrl/rest/api/latest/myself', headers: {
    //   'Authorization': 'Bearer $apiToken',
    // });
    // if (response.statusCode == 200) {
    //   return User.fromJson(jsonDecode(response.body));
    // } else {
    //   throw Exception('Failed to fetch user info');
    // }
    // 由于我们没有实际的API调用,这里返回一个模拟的用户对象
    return User(displayName: 'John Doe');
  }
}

class User {
  String? displayName;

  User({this.displayName});

  // fromJson是假设的方法,用于从JSON数据反序列化User对象
  factory User.fromJson(Map<String, dynamic> json) {
    return User(displayName: json['displayName'] as String?);
  }
}

注意

  1. 上面的代码示例中,JiraClientUser类是根据假设创建的,因为jira_teko_flutter插件的实际API和类结构可能不同。你需要根据插件的文档来调整这些类和方法。
  2. 实际的API调用(如获取用户信息)需要使用HTTP客户端(如http包)来发送请求,并处理响应。上面的示例中为了简化而省略了这些部分。
  3. 请确保你的Jira实例允许使用API Token进行身份验证,并根据需要配置Jira的API权限。

为了获取最新的和详细的API信息,请查阅jira_teko_flutter插件的官方文档和示例代码。

回到顶部