2012-01-16 32 views
13

Hiện tại tôi đang sử dụng hệ thống phân cấp thử nghiệm 2 cấp trong DUnit (Test Project -> Test Case -> Test method; xem ví dụ bên dưới). Có thể giới thiệu cấp độ 3 hoặc thậm chí nhiều cấp hơn không?Phân cấp kiểm tra DUnit

DUnit Example

Trả lời

9

Bạn có thể sử dụng phòng thử nghiệm để tạo bao nhiêu mức độ làm tổ như bạn mong muốn. Các documentation cung cấp các ví dụ sau:

Đơn vị TestFramework để lộ ra lớp TTestSuite, lớp mà thực hiện dãy phòng thử nghiệm, vì vậy bạn có thể tạo ra hệ thống phân cấp kiểm tra sử dụng nhiều mã rõ ràng:

các chức năng sau đây, UnitTests , tạo bộ thử nghiệm và thêm hai lớp thử nghiệm vào nó:

function UnitTests: ITestSuite; 
var 
    ATestSuite: TTestSuite; 
begin 
    ATestSuite := TTestSuite.create('Some trivial tests'); 
    ATestSuite.addTest(TTestArithmetic.Suite); 
    ATestSuite.addTest(TTestStringlist.Suite); 
    Result := ATestSuite; 
end; 

Một cách khác để thực hiện các chức năng trên sẽ là:

function UnitTests: ITestSuite; 
begin 
    Result := TTestSuite.Create(
    'Some trivial tests', 
    [TTestArithmetic.Suite, TTestStringlist.Suite] 
); 
end; 

Trong ví dụ trên, các nhà xây dựng TTestSuite thêm các xét nghiệm trong mảng truyền cho bộ ứng dụng .

Bạn có thể đăng ký một bộ kiểm tra được tạo ra trong bất kỳ cách trên bởi sử dụng cùng gọi bạn sử dụng để đăng ký trường hợp thử nghiệm cá nhân:

initialization  
    RegisterTest('Simple Test', UnitTests); 
end. 

Khi chạy với GUITestRunner, bạn sẽ thấy hệ thống phân cấp mới.

+0

Nó hoạt động, cảm ơn. – kludg

+6

@Serg Bạn cũng có thể thêm dấu chấm vào tên mà bạn đăng ký kiểm tra và DUnit sẽ thêm một mức cho mỗi dấu chấm. Ví dụ, khi bạn thực hiện 'RegisterTest ('Simple.Test', UnitTests);' Nó sẽ tạo ra Simple như một nút và Test như là một subnode của nó trong hệ thống phân cấp thử nghiệm. Tính năng rất đẹp để nhóm thử nghiệm trong các đơn vị khác nhau dưới cùng một tên chức năng. –

+0

@Marjan +1 thật thú vị, không biết điều đó. Tôi có cảm giác rằng có rất nhiều quyền lực trong DUnit mà không được biết đến rộng rãi. –

3

Bạn có thể nhóm các thử nghiệm liên quan trong các bộ thử nghiệm, có thể lồng nhau.

Nếu bạn muốn làm điều đó trong thời gian chạy, hãy xem "Open Test Test Framework (OpenCTF)" của tôi tại sourceforge.

11

Tôi tạo cấu trúc phân cấp bằng cách đặt dấu gạch chéo ngược trong `SuitePath '. Ví dụ:

initialization 

    RegisterTests('Group1\Group2', [TExampleTests1.Suite, 
            TExampleTests2.Suite]); 

    RegisterTests('Group1\Group3', [TExampleTests3.Suite, 
            TExampleTests4.Suite]); 
end. 

Cuối cùng tôi nhận được một cái gì đó như thế này:

Example DUnit Test Hierarchy

ít Rất nhiều mucking xung quanh hơn với cách của David, và bạn có thể lây lan các định nghĩa nhóm của bạn trên các đơn vị khác nhau.

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