2010-12-12 193 views
2

是否有人,如果下面的代碼(想法,實際上)可能使用xunitC#單元測試問題

public class RepositoryTester { 

    private IRepository repository; 

    public RepositoryTester(IRepository repository) { 
     this.repository = repository; 
    ) 

    [Fact] // Analogue of [Test] in other test packages. 
    void CanDoWhatever() { 
     // Test code 
    } 
} 

現在,如果我嘗試運行所有的單元測試,它會失敗,只要xunit嘗試通過調用new RepositoryTester()創建對象RepositoryTester(它調用沒有參數的構造函數)。

我想做的事,可以等效地表示這樣:

var tester1 = new RepositoryTester(new SQLRepository(...)); 
var tester2 = new RepositoryTester(new InMemoryRepository(...)); 

tester1. RUN_ALL_TESTS(); 
tester2. RUN_ALL_TESTS(); 

是否有人知道,如果下面的行爲是可能的嗎?(我真的希望通過它的接口爲每個可測試的存儲庫使用相同的測試包)。

謝謝

回答

2

您可以RepositoryTester抽象,並有創建一個無參數的構造函數適當IRepository每種類型庫的一個派生類。將爲每個具體的子類運行繼承的測試方法。