2013-04-23 82 views
0

我有两个类来构建一个订单。基本上创建订单的类正常工作,但我想使用断言来验证返回的信息。第一类使用通用值构建订单,并为我准备好将实际信息应用于其他类。下面是一个示例:运行另一个类的Nunit声明

public static OrderService Build(int Id, string password) 
     { 
      var req = new OrderRequest 
       { 
        Start = run, 
        Passsword = password, 
        ID = custId, 
       }; 

      return req; 
     } 

这里是将测试样本数据我穿过的结果类的一个示例:

[TestCase(12565, "passWord")] 
    public static void Case(int custId, string password) 
    { 
     var create = new Order(); 

     var req = Order.Build(custId, password); 
     if (req == null) return; 

     create.Resp = ws.Run(req) as OrderResponse; 
     Assert.IsNotNull(create.Resp); 
    } 

这些测试将自己的运行和订购服务什么但是我的问题是能够将断言实现为第一类,因此我不必将其放入实际的测试用例中。我正在使用来自Web服务的请求和响应,因此对我来说会变得粘滞。

谢谢!

+0

我不明白 - 你的问题是什么?在测试中不使用实际的Web服务或断言'OrderService'实例?什么是'run'参数?这个测试中实际的_exercise_或_act_是什么? – 2013-04-25 06:38:50

回答

0

您应该使用模拟框架,如moq而不是实际调用Web服务。

调用外部技术如数据库或Web服务将不会包含在单元测试中。单元测试测试业务逻辑。

单元测试:测试类的内部运作 - 通常在方法级别。它应该是一个与其他资源或系统无关的独立测试。

集成测试:测试多个子系统的正确的互操作。

+0

感谢您的建议,但不幸的是我必须这样做。我们将在未来纳入moq框架,但现在我必须这样做。 – CSharpDev4Evr 2013-04-23 14:48:45

+0

您实际上不必使用模拟框架。您可以通过“测试”实现来实现服务接口。例如,测试Web服务implmentation可以返回一个硬编码的字符串,而不是从真实的Web服务返回的字符串。通过使用接口,稍后将很容易使用适当的模拟框架。 – 2013-04-23 14:51:49

+0

你能指导我一个这样的例子吗?我想过使用接口,但它并不适合我,但也许我错误地实现了。 – CSharpDev4Evr 2013-04-23 15:01:15