2011-12-08 44 views
15

Dart dường như chưa có một khung thử nghiệm đơn vị chuyên dụng. Cách tiếp cận tốt nhất để viết và chạy thử nghiệm đơn vị là gì?Cách tốt nhất để viết các bài kiểm tra đơn vị trong Dart là gì?

Có một số ví dụ ở mức độ thấp rất trong mã nguồn của Dart (ví dụ \ test \ corelib \ src \ ListTest.dart), như thế này:

class ListTest { 

    static testMain() { 
    testList(); 
    testExpandableList(); 
    } 

    static void testList() { ... } 
    static void testExpandableList() { ... } 
} 

main() { 
    ListTest.testMain(); 
} 

Đây có phải là cách khuyến khích để viết bài kiểm tra trong Dart hoặc có nỗ lực nào để làm cho nó dễ dàng hơn với một số thư viện thử nghiệm đơn vị, như đơn vị x không?

Có cách nào dễ dàng để chạy tất cả các bài kiểm tra đơn vị được viết theo cách này và xem kết quả không?

+0

Vì gói chưa thanh toán hiện có sẵn, bạn có thể thay đổi câu trả lời được chấp nhận thành Antony ở bên dưới không. –

Trả lời

13

Thử nghiệm đơn vị tại Dart vẫn còn đang được phát triển. Chúng tôi (các tác giả Dart) hiện đang sử dụng một kịch bản python (tools/test.py) để thực hiện tất cả các thử nghiệm của chúng tôi. Kịch bản chạy qua các thư mục được xác định trước, tìm kiếm các tệp kết thúc bằng 'Kiểm tra', thực hiện chúng và so sánh chúng với kết quả mong đợi.

Một vài ngày trước, phiên bản đầu tiên của test.dart (tương đương trong Dart) đã được gửi. Trong tương lai gần, chúng ta sẽ chuyển từ tools/test.py thành tools/test.dart để thực thi tất cả các test của chúng ta.

Nếu bạn đang viết một dự án lớn, bạn có thể sử dụng lại khung thử nghiệm của chúng tôi. Chúng tôi đang sử dụng nó hàng ngày và nó khá ổn định. Đối với các dự án nhỏ hơn, thời gian dành cho việc học khuôn khổ có thể không đáng để nỗ lực. Tôi cũng sẽ không ngạc nhiên nếu có (hoặc sẽ là) các khuôn khổ thử nghiệm khác.

Danh sách kiểm tra từ câu hỏi của bạn đã được viết rất sớm, khi chức năng cấp cao nhất chưa có sẵn. Nó đã được sửa đổi (thêm chức năng chính) nhưng chúng tôi sẽ không viết bài kiểm tra theo cách này nữa. Trừ khi cần thiết, chúng tôi không tạo các lớp trong các trường hợp thử nghiệm của chúng tôi. Xem, ví dụ: here để kiểm tra gần đây hơn.

Chỉnh sửa: Ngoài ra còn có một khung kiểm thử đơn vị trong ứng dụng khách/thử nghiệm/unittest /. Xem here để kiểm tra bằng cách sử dụng khung này. Điều này cũng có lợi thế là nó chạy trong trình duyệt.

+0

Tôi sẽ chỉ thêm rằng unittest cũng hỗ trợ chạy trong máy ảo độc lập và trên đầu trang của ếch/nút bây giờ quá. – munificent

+2

câu trả lời này là một chút ngày nay. có một thư viện unittest ở đầu thân cây bây giờ. –

5

This post từ "Adam Coding" (qua G +) cung cấp mô tả chi tiết về trạng thái hiện tại của thử nghiệm đơn vị phi tiêu, với ảnh chụp màn hình đẹp của chế độ xem trong trình duyệt của các bài kiểm tra đơn vị của bạn.

7

dartlang.org có một bài viết rất dài về current state of unit testing in dart. Tài liệu API có thể được tìm thấy here.

import 'package:unittest/unittest.dart'; 

void main() { 
    test('QuickSort',() => 
    expect(QuickSort([5, 4, 3, 2, 1]), 
     orderedEquals([1, 2, 3, 4, 5])) 
); 
} 

int _Partition(List array, int left, int right, int pivotIndex) { 
    var pivotValue = array[pivotIndex]; 
    array[pivotIndex] = array[right]; 
    array[right] = pivotValue; 
    var storeIndex = left; 
    for (var i = left; i < right; i++) { 
    if (array[i] < pivotValue) { 
     var tmp = array[i]; 
     array[i] = array[storeIndex]; 
     array[storeIndex] = tmp; 
    } 
    } 
    var tmp = array[storeIndex]; 
    array[storeIndex] = array[right]; 
    array[right] = tmp; 
    return storeIndex; 
} 

void _QuickSort(List array, int left, int right) { 
    if (left < right) { 
    int pivotIndex = left + ((right-left)/2); 
    pivotIndex = _Partition(array, left, right, pivotIndex); 
    _QuickSort(array, left, pivotIndex-1); 
    _QuickSort(array, pivotIndex+1, right); 
    } 
} 

List QuickSort(List array) { 
    _QuickSort(array, 0, array.length-1); 
    return array; 
} 
2

Sử dụng kiểm tra Dart gói https://pub.dartlang.org/packages/test

gói này trước đây được đặt tên là unittest mà bây giờ bị phản đối, nhưng bạn có thể đi qua các bài báo cũ về nó. Các bài kiểm tra mới nên được viết cho gói "test".

Có thể chạy thử nghiệm thủ công (như bất kỳ chương trình Dart nào khác) hoặc sử dụng pub (có thể chạy thử nghiệm riêng lẻ hoặc nhiều thử nghiệm được tìm thấy trong thư mục).

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