2013-02-12 29 views

Trả lời

19

Không - không có cơ sở như hiện nay,

Một cách nhanh chóng của việc đạt được hiệu quả trong xUnit là để bình luận ra các public - các lớp riêng tư không được phản ánh (rõ ràng là nó sẽ không xuất hiện trong danh sách bỏ qua theo cách đó). Xem xét việc đăng nhập nó như là một vấn đề trên CodePlex nếu bạn cảm thấy cần thiết cho điều này là đủ phổ biến (cá nhân tôi không thể tưởng tượng upvoting nó như tôi chỉ đơn giản là không chạy vào trường hợp tôi cần phải bỏ qua toàn bộ một bài kiểm tra kiểm tra).

CẬP NHẬT: Một cách khác là đặt TraitAttribute vào lớp học và sau đó (giả sử bạn đang sử dụng runner xunit.console) lọc ra bằng cách chạy với /-trait traitName. (ví dụ: bạn có thể đạt được ExplicitAttribute, một số khía cạnh của kỹ thuật BDD của các bài kiểm tra đang chờ xử lý và ngữ nghĩa tương tự theo cách đó - tất nhiên vấn đề lớn là chúng không hiển thị trong bất kỳ báo cáo nào khi sử dụng bất kỳ kỹ thuật lọc nào)

CẬP NHẬT 2: bạn có thể làm

const string skip = "Class X disabled"; 

[Fact(Skip=skip)] 
void Test() {} 

Sau đó, bạn có thể thay đổi để cho const string skip = null để hoàn tác bỏ qua. Lợi thế (dis) của điều này là thử nghiệm vẫn được hiển thị dưới dạng thử nghiệm Bỏ qua trong danh sách thử nghiệm, thường có lý do được đưa vào báo cáo chạy thử (so với làm cho nó private khiến nó có thể bị lãng quên)

+0

@woni thêm ý tưởng của việc sử dụng một Trait trong trường hợp nó xảy ra để phù hợp với hoàn cảnh của bạn (tôi giả sử không mặc dù!) –

+2

Với xUnit> = 2.3 bạn nhận được một thông báo lỗi 'lỗi xUnit1000: lớp học thử nghiệm phải được public' –

+0

@ andrei.ciprian bạn có thể làm rõ nơi lỗi này đến từ/làm thế nào nó nổi lên? (IIRC là một plugin roslyn gắn cờ trong IDE, không phải lúc chạy?) –

0

Thêm lý do gần một năm sau câu hỏi đầu tiên. Tôi có một bộ kiểm tra đang gọi apis máy chủ thực, và tôi muốn chạy sau đó theo yêu cầu. Với nUnit, nó có thuộc tính Ignore: với thiết lập đó, runner thử nghiệm sẽ bỏ qua các thử nghiệm đó, nhưng tôi vẫn có thể chạy nó theo cách thủ công.

xUnit không có tính năng như vậy. Một trong những gần nhất là thiết lập một thuộc tính cấp lớp như vậy, và bình luận nó ra khi tôi muốn chạy nó.

1

Dưới đây là hack của tôi để tránh lỗi xUnit1000: lớp học thử nghiệm phải được công khai (kiểm tra trên thực tế duy nhất, tôi nghĩ rằng lý thuyết có thể bị hack theo cách này, quá).

// Uncomment to enable tests 
//public class FactSwitch : FactAttribute { } 

// Uncomment to disable tests 
internal class FactSwitch : Attribute { } 

public class MyTests 
{ 
    [FactSwitch] 
    public void MyTest1() 
    { 
     "it".ShouldBe("it"); 
    } 
} 
+1

Sử dụng '#define Thuộc tính thực tế' nhỏ gọn hơn và cho phép bạn tiếp tục sử dụng' [Fact] '. –

+0

Sẽ là ảnh đẹp, nhưng không phải là C++, có giới hạn cho việc sử dụng #define –

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