2011-08-04 28 views
6

Đây là một ví dụ về một trong các bài kiểm tra chấp nhận của chúng tôi:Làm thế nào để bạn truy cập tính năng chống mẫu mã BDD trong luồng không?

Feature: Add an effect to a level 
In order to create a configuration 
As a user 
I want to be able to add effects to a level 

Scenario: Add a new valve effect to a level 
Given I have created a level named LEVEL123 with description fooDescription 
And I am on the configuration page 
When I click LEVEL123 in the level tree 
And I expand the panel named Editor Panel 
And I click the Add Valve Effect button 
And the popup named ASRAddVal appears 
And I click the Add new button 
And I fill in these vertical fields 
    | field name | value    | 
    | Name  | Effect123   | 
Then I should see the following texts on the screen 
    | text      | 
    | Effect added : EFFECT123 | 

Chúng tôi cảm thấy rằng đây là nhận được một chút là Verbose và chúng tôi muốn nghe cách bạn giảm bước trong Specflow. Từ những gì tôi đã đọc cho đến nay, việc tạo các bước không thể tái sử dụng cụ thể không được khuyến khích, vì vậy những gì được coi là "thực hành tốt nhất" khi thực hiện điều này trong SpecFlow?

Cập nhật:

Những gì tôi đang cố gắng để nói là tôi đã học được rằng bạn nên cố gắng tạo ra bước chung để tái sử dụng chúng trên nhiều bài kiểm tra. Một cách để làm điều đó là tham số hóa các bước của bạn, ví dụ: "Với tôi đã tạo một cấp có tên ..", nhưng việc tham số hóa cũng giới thiệu độ dài. Tôi muốn kết thúc với một cái gì đó như Bryan Oakley cho thấy trong câu trả lời của mình, nhưng tôi chỉ không thể nhìn thấy làm thế nào tôi có thể làm điều đó mà không tạo ra các bước rất cụ thể cho mỗi bài kiểm tra. Điều này một lần nữa có nghĩa là tôi sẽ kết thúc với rất nhiều bước làm giảm khả năng bảo trì. Tôi có vẻ như SpecFlow có một số cách để xác định các bước viết tắt bằng cách tạo một tệp kế thừa một lớp cơ sở có tên là "Steps", nhưng điều này vẫn giới thiệu các bước mới.

Vì vậy, để tóm tắt mọi thứ; cho tôi thấy một cách tiếp cận tốt để kết thúc với Bryan Oakleys câu trả lời có thể duy trì được.

Trả lời

9

tôi sẽ đơn giản hóa nó đến một cái gì đó như thế này:

Scenario: Add a new valve effect to a level 
Given I have created a new level 
When I add a new valve effect with the following values 
    | field name | value    | 
    | Name  | Effect123   | 
Then I should get an on-screen confirmation that says "Effect added: Effect123" 

Con đường tôi đã tiếp cận vấn đề là để tưởng tượng rằng bạn đang hoàn toàn thiết kế lại giao diện người dùng. Thử nghiệm vẫn có thể sử dụng được không? Ví dụ: thử nghiệm sẽ hoạt động ngay cả khi không có nút "Thêm" trong thiết kế lại hoặc bạn không còn sử dụng cửa sổ bật lên nữa.

+0

Ok, nhưng làm cách nào để bạn thực hiện các bước trở nên rất cụ thể? Từ những gì tôi đã hiểu cho đến nay, bạn nên tránh các bước thử nghiệm cụ thể. – Marius

+0

@Marius: Tôi không hiểu câu hỏi của bạn. Đương nhiên, _something_ phải là duy nhất cho thử nghiệm - chẳng hạn như "Khi tôi thêm hiệu ứng van mới với các giá trị sau". Nếu không có gì độc đáo, sẽ không có điểm nào cho bài kiểm tra. Mặt khác, mỗi bước trong số đó có thể được sử dụng trong các thử nghiệm khác. Ví dụ: "cho trước tôi đã tạo cấp độ mới ... khi tôi xóa cấp mới ...". Hoặc, "Khi tôi thêm mới một hiệu ứng van mới ... sau đó tôi sẽ nhận được lỗi" tên trường không hợp lệ ", v.v. –

+0

Tôi đã cố gắng giải thích vấn đề của mình chi tiết hơn, xem phần cập nhật câu hỏi. – Marius

0

Bạn có thể thử từ ngữ chúng một cách tổng quát và sử dụng các tham số.

Given i have create a new: Level 

':' chỉ để bạn có thể xác định tham số. Điều này có nghĩa là bạn sẽ có một điểm nhập chung cho một bước cần tạo ra một cái gì đó mới. Bước lên đến bước đó để xem thông số của Cấp và tạo Cấp độ mới

Đồng thời cố gắng đưa ra một chuyển đổi đặt tên mà mọi người đều có thể sử dụng. Nó sẽ dễ dàng để khám phá những bước đã được tạo ra, do đó bạn không nhận được các bước tương tự trùng lặp.

0

Tôi có thể đề xuất rằng có thể mã bạn đang thử nghiệm nên đi vào các thử nghiệm đơn vị. Có lẽ ý của bạn là "kiểm tra cụ thể" là các bài kiểm tra đơn vị riêng lẻ không được bao gồm trong các bài kiểm tra chấp nhận của bạn.

Chỉ cần suy nghĩ :)

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