2015-10-18 26 views
1

我需要寫一個單元測試這種方法:如何獲取單元測試的數據模板?

public void MethodToTest(Data data) 
{ 
    // ... some actions with data 
} 

數據類:

public class Data 
{ 
    public string Name { get; set; } 
    public int Age { get; set; } 
    public string Surname { get; set; } 
    // ... hundred other properties 
} 

在我的測試,我需要Data型的一些模板對象來操作它。 但是這個類有太多複雜的屬性來手動編寫這個「模板」。 在實際程序中Data從DB中檢索對象。在調試時,我可以將其中一些序列化爲XML或JSON。但後來我需要以某種方式反序列化它進行測試。相信有一個共同的模式和工具來解決這些問題。那麼做一個適當的方法是什麼?

+3

你以前見過類似AutoFixture的東西嗎?它有助於自動生成類並用數據填充它們。 https://github.com/AutoFixture/AutoFixture – JBond

+0

我會試一試! ;) – AsValeO

回答

2

如果MethodToTest僅使用Data類的幾個部分,你可以定義偏析這些屬性的接口:

public interface PersonalData { 
    string Name {get; set; } 
    int Age {get; set; } 
    string Surname {get; set; } 
} 

public void MethodToTest (PersonalData data) { ... } 

,並有Data實現這個接口

public class Data: PersonalData { ... } 

然後你可以使用一個爲您的測試實現PersonalData的測試類(或者您可以使用模擬框架生成PersonalData的實現)。