2017-09-28 36 views
8

Tôi muốn chuyển một biến môi trường cho một bài kiểm tra flutter drive.Làm thế nào để vượt qua một biến môi trường để kiểm tra trình điều khiển rung

Có thể đọc giá trị trong ứng dụng được khởi chạy hoặc mã thử nghiệm cả hai sẽ ổn, vì tôi cần nó trong ứng dụng và nếu tôi chỉ có thể lấy nó trong mã thử nghiệm, tôi có thể chuyển nó đến ứng dụng bằng driver.requestData()

Ví dụ Travis cho phép tôi chỉ định biến môi trường không được hiển thị theo bất kỳ cách nào (như nội dung tập lệnh và đầu ra nhật ký).

Tôi muốn chỉ định tên người dùng và mật khẩu theo cách này để sử dụng trong ứng dụng.

Setting environment variables in Flutter là một câu hỏi tương tự, nhưng dường như quá phức tạp đối với trường hợp sử dụng của tôi.

Trả lời

2

Tôi đã thử sử dụng số phi tiêu Platform.environment của Dart để đọc các biến env trước khi chạy kiểm tra trình điều khiển và có vẻ như hoạt động tốt. Dưới đây là một ví dụ đơn giản đặt ra thư mục đầu ra cho các bản tóm tắt thử nghiệm bằng cách sử dụng biến env FLUTTER_DRIVER_RESULTS.

import 'dart:async'; 
import 'dart:io' show Platform; 

import 'package:flutter_driver/flutter_driver.dart'; 
import 'package:test/test.dart'; 

void main() { 
    // Load environmental variables 
    String resultsDirectory = 
    Platform.environment['FLUTTER_DRIVER_RESULTS'] ?? '/tmp'; 
    print('Results directory is $resultsDirectory'); 

    group('increment button test',() { 
    FlutterDriver driver; 

    setUpAll(() async { 
     // Connect to the app 
     driver = await FlutterDriver.connect(); 
    }); 

    tearDownAll(() async { 
     if (driver != null) { 
     // Disconnect from the app 
     driver.close(); 
     } 
    }); 

    test('measure',() async { 
     // Record the performance timeline of things that happen 
     Timeline timeline = await driver.traceAction(() async { 
     // Find the scrollable user list 
     SerializableFinder incrementButton = find.byValueKey(
      'increment_button'); 

     // Click the button 10 times 
     for (int i = 0; i < 10; i++) { 
      await driver.tap(incrementButton); 

      // Emulate time for a user's finger between taps 
      await new Future<Null>.delayed(new Duration(milliseconds: 250)); 
     } 

     }); 
     TimelineSummary summary = new TimelineSummary.summarize(timeline); 
     summary.writeSummaryToFile('increment_perf', 
      destinationDirectory: resultsDirectory, pretty: true); 
     summary.writeTimelineToFile('increment_perf', 
      destinationDirectory: resultsDirectory, pretty: true); 
    }); 
    }); 
} 
+0

Tôi có các thử nghiệm chạy trong "mã ứng dụng" thay vì trong tệp thử nghiệm (được chuyển sang chiến lược này sau khi tôi đăng câu hỏi này). Tôi đoán nó có thể làm việc để vượt qua các giá trị cho mã chạy trên thiết bị/giả lập bằng cách gửi một gequest đến một plugin đã đăng ký. Tôi sẽ cgeck một lần nữa và cho bạn biết. –

Các vấn đề liên quan