我正在使用MS UnitTesting并试图找到我的第一次单元测试.似乎我的所有单元测试都是从创建相同的几个对象开始的......
[TestMethod]
CanCreateOrder()
{
<create an order>
...
}
[TestMethod]
CanSetOrderDeliveryAddress()
{
<create an order>
<create an address>
order.DeliveryAddress = address;
...
}
[TestMethod]
CanDispatchAnOrder()
{
<create an order>
<create an address>
order.DeliveryAddress = address;
order.Dispatch();
...
}
Run Code Online (Sandbox Code Playgroud)
...等等
这是正常的,还是我的想法错了?我认为每个测试都应该是独立的,但是如果Dispatch()没有那个隐含地依赖CreateOrder并且SetDeliveryAddress已经通过测试怎么可能呢?
问题的第二部分,如果上面的方法看起来不错,我应该使用工厂或其他东西在我的测试项目中实例化这些对象吗?我不确定测试项目是否应该只包含测试类/方法,或者也可以添加一堆帮助程序.
你似乎走在了正确的轨道上.在许多单元测试中,您需要设置要测试的对象的状态,以便能够测试特定的行为部分.当您测试的bahaviour需要类似设置时,它将有助于在类中对测试进行分组,并使用[TestInitialize]方法来减少该设置的重复.
例如:
[TestClass]
public class WhenReadyToDispatch{
private Order order;
[TestInitialize]
public void Initialize
{
order = <create an order>
order.DeliveryAddress = <create an address>
}
[TestMethod]
CanChangeOrderDeliveryAddress()
{
order.DeliveryAddress = address;
}
[TestMethod]
CanDispatchAnOrder()
{
order.Dispatch();
}
}
Run Code Online (Sandbox Code Playgroud)
在测试项目中拥有辅助类是很好的 - 您应该将测试代码作为生产代码.
| 归档时间: |
|
| 查看次数: |
1991 次 |
| 最近记录: |