2017-02-09 49 views
8

當您正在測試的類中有一種方法時,BDD命名方法可以很好地工作。假設我們有一個Connector類,它有Connect方法:多種方法的BDD命名

Should_change_status_to_Connected_if_Disconnected 

美麗吧?但是當我在一個類中有幾個方法時必須命名測試時,我感到困惑(讓我們假設我們爲我們的類添加了Disconnect方法)。

我看到兩種可能的解決方案。第一種是添加一個前綴的方法名,如:

Should_change_status_to_Connected_if_Disconnected_when_Connect_was_called 

另一種方法是引入嵌套的測試類爲你測試每個方法。

public class ConnectorTests 
{ 
    public class ConnectTests 
    { 
    public void Should_change_status_to_Connected_if_Disconnected() 
    { 
     ... 
    } 
    } 

    public class DisconnectTests 
    { 
    public void Should_change_status_to_Disconnected_if_Connected() 
    { 
     ... 
    } 
    } 
} 

老實說,兩種方法感覺有點偏離(可能只是因爲我不習慣它)。建議的路線是什麼?

+0

您能否爲您的問題添加更多上下文? methodA和methodB有什麼區別。他們都做了什麼? –

+0

@SergeyBerezovskiy,當一個類包含多個方法時,我的意思是一般情況。 – SiberianGuy

+1

對不起,但不清楚你有什麼樣的問題。方法引入了一些行爲。如果methodA用於* somethingA *而methodB用於* somethingB *那麼您的問題並不清楚。如果它們都爲* somethingC *,那麼* methodA *和* methodB *之間的區別是什麼? –

回答

0

由於測試用例完全相互獨立,因此您必須使用靜態類來初始化那些稍後將用於測試的值,連接等。如果你想使用個人價值觀和發起人,你必須在你的課堂上單獨申報。我用這個nunit框架。

順便說一下,你是在C#中,使用的.NET開發人員的命名約定...

1

在我的情況下,首先,我試圖根據前置和後置條件,單獨的類,這樣我就可以組一些行爲,並將相關事物彙總在一起。例如,在你的情況,一個前提可能是「斷開」,那麼,你可以使用像ClassInitialize,TestInitialize,TestCleanup,ClassCleanup等(here some examples in MSDN

屬性準備「斷開連接環境」和請,作爲其他開發者建議,不要忘記naming conventions

希望這個幫助,問候。