2011-02-28 18 views
0

我有一個大的Windows服務應用程序。它在時間限制的基礎上執行操作。有時候我需要能夠獨立於應用程序的其餘部分來使用它的一些功能。目前我有一系列'單元測試',可以調用各種來源並執行所需的功能。我的問題是這些不是單元測試,他們是我們暴露API的方式。如果我們在項目中運行所有的單元測試,我們會損害一些生產數據。如何使用Windows服務的API?

我的問題是如何在沒有單元測試的情況下訪問應用程序的某些功能?我想到的可能是類似於解釋器的解釋器,你可以調用各種功能的部分,但我不確定從哪裏開始。

在我們的代碼單元測試的一個例子是:

[TestMethod] 
public void TransferFunds() 
{ 
    int accountNumberTo = 123456; 
    int accountNumberFrom = 654321; 
    var accountFrom = Store.GetAccount(accountNumberFrom); 
    var accountTo = Store.GetAccount(accountNumberTo); 
    double amountToTransfer = 1000; 
    DateTime transactionDate = new DateTime(2010,01,01); 
    Store.TransferFunds(accountFrom, AccountTo, amountToTransfer, transactionDate); 
    var client = BankAccountService.Client(); 
    client.Contribute(accountNumberTo, amountToTransfer, transactionDate); 
    client.Contribute(accountNumberFrom, amountToTransfer, transactionDate); 
} 

我們怎樣才能移動這一點的單元測試,但仍然有這樣運行代碼的能力?

回答

0

您的設置聽起來非常危險。我會爲您的不同需求創建單獨的控制檯應用程序。我還會刪除建議您刪除所有危及生產數據的單位測試。有這樣的單位測試就是錯誤的!

+0

同意,但不會有單獨的控制檯應用程序爲我們想要公開的數百個功能是維修噩夢?單元測試的危險性在於爲什麼我想從單元測試中獲得這樣的代碼,你永遠不知道什麼時候某個人不知道不要運行單元測試並打破所有事情! – 2011-02-28 11:23:02

+0

如果您擁有數百個功能,維護噩夢無論如何。如果你對你的功能進行了適當的單元測試,你可以假設一切都很好,直到測試失敗。 – Morten 2011-02-28 11:40:11