2011-02-28 59 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