.NET重构—单元测试重构(1)

发表于:2013-10-09 11:11

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:wangqingpei557    来源:51Testing软件测试网采编

namespace UnitTestRefactoring
{
public class OrderService
{
private IServiceConnection ServiceConnection;
private IServiceReader ServiceReader;
private IServiceWriter ServiceWrite;
public OrderService(IServiceConnection connection, IServiceReader reader, IServiceWriter writer)
{
this.ServiceConnection = connection;
this.ServiceReader = reader;
this.ServiceWrite = writer;
}
public bool GetOrders(string orderId)
{
if (string.IsNullOrWhiteSpace(orderId))
return false;
return true;
}
}
}

  这个类表示远程Order服务,只有一个方法GetOrders,该方法可以根据OrderId来查询Order信息,为了简单起见,如果返回true说明服务调用成功,如果返回false表示调用失败;其中构造函数包含了三个接口,分别用来表示不同用途的接口抽象;IServiceConnection表示对远程服务链接的抽象,IServiceReader表示对不同服务接口读取的抽象,IServiceWriter表示对不同服务接口写入的抽象;这么做可以最大化的分解耦合;
using System;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using NSubstitute;
using UnitTestRefactoring;
namespace UnitTestRefactoring.UnitTests
{
[TestClass]
public class OrderService_UnitTests
{
[TestMethod]
public void OrderService_GetOrders_NormalFlows()
{
IServiceConnection mockServiceConnection = Substitute.For<IServiceConnection>();
IServiceReader mockServiceReader = Substitute.For<IServiceReader>();
IServiceWriter mockServiceWriter = Substitute.For<IServiceWriter>();
OrderService testOrderService = new OrderService(mockServiceConnection, mockServiceReader, mockServiceWriter);
bool testResult = testOrderService.GetOrders("10293884");
Assert.AreEqual(true, testResult);
}
[TestMethod]
public void OrderService_GetOrders_OrderIdIsNull()
{
IServiceConnection mockServiceConnection = Substitute.For<IServiceConnection>();
IServiceReader mockServiceReader = Substitute.For<IServiceReader>();
IServiceWriter mockServiceWriter = Substitute.For<IServiceWriter>();
OrderService testOrderService = new OrderService(mockServiceConnection, mockServiceReader, mockServiceWriter);
bool testResult = testOrderService.GetOrders(string.Empty);
Assert.AreEqual(false, testResult);
}
}
}
using System;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using NSubstitute;
using UnitTestRefactoring;
namespace UnitTestRefactoring.UnitTests
{
[TestClass]
public class OrderService_UnitTests
{
[TestMethod]
public void OrderService_GetOrders_NormalFlows()
{
IServiceConnection mockServiceConnection = Substitute.For<IServiceConnection>();
IServiceReader mockServiceReader = Substitute.For<IServiceReader>();
IServiceWriter mockServiceWriter = Substitute.For<IServiceWriter>();
OrderService testOrderService = new OrderService(mockServiceConnection, mockServiceReader, mockServiceWriter);
bool testResult = testOrderService.GetOrders("10293884");
Assert.AreEqual(true, testResult);
}
[TestMethod]
public void OrderService_GetOrders_OrderIdIsNull()
{
IServiceConnection mockServiceConnection = Substitute.For<IServiceConnection>();
IServiceReader mockServiceReader = Substitute.For<IServiceReader>();
IServiceWriter mockServiceWriter = Substitute.For<IServiceWriter>();
OrderService testOrderService = new OrderService(mockServiceConnection, mockServiceReader, mockServiceWriter);
bool testResult = testOrderService.GetOrders(string.Empty);
Assert.AreEqual(false, testResult);
}
}
}
42/4<1234>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号