首页 新闻 会员 周边 捐助

Unit Test Workflow

0
悬赏园豆:80 [已关闭问题] 关闭于 2013-07-29 10:51

场景:

同一个项目中有workflow项目以及对wf的Unit Test项目, UT项目通过Service References 对WF项目访问并测试,UT项目使用如下方式访问WF服务:

[TestClass]
public class WorkflowUnitTest
{

   private MessageTransferClient clientInstance = null;

   [TestInitialize]
   public void TestInit()
   {
       clientInstance = new MessageTransferClient("EP_Http");
    }

    [TestMethod]
    public void CreateInstanceTest()
   {
        // to do clear instance
        Operation op = Operations.CreateInstance;
        op.SubRegion = "asl";
        var wfRequest = new SaRequest() { WeekId = new Random().Next(150, 10000), Operation = op, Roles = new string[] { "Asl" } };

        var wfResponse = clientInstance.InstanceCreated(wfRequest);

        Assert.AreEqual(wfResponse.GetType().ToString(), typeof(SaResponse).ToString());
        Assert.AreEqual(wfResponse.AlmState, States.ALMStart);
        Assert.AreEqual(wfResponse.AslState, States.ASLStart);
        Assert.AreEqual(wfResponse.BudgetState, States.BudgetStart);
      }// 说明:wfRequest 和wfRequest是自定义类,用于wf之间传递消息的

}

说明补充:

1. workflow用到的表都是系统自带脚本创建的

2. 加粗部分表示这个作为wf 实例对象的唯一标示符

问题1:WeekId 我是用的是随机数,目的时,测试时保证你每次运行测试都可以创建一个新的wf实例,我现在想解决这个问题,因为,我的每个测试方法里面都是用随机数来创建实例的,这个在生产环境是不行的。

问题2:我如何清除unit test产生的wf 实例对象呢? 因为,当你的unit test 完成后,你要保证你ut 所产的wf对象要清除掉,不能驻留数据库以免对生产环境数据产生影响。

问题3: UT项目,你懂的,会写很多[TestMethod] 的方法,所以,只是用一个wf 实例对象呢,现在我的每个方法都是自己创建一个wf实例,多少个方法,将来测试完成后就会有多少个wf的对象,这是不应该。

 

初次接触workflow,基础没学好,英文也比较差,请各位大神好心帮忙下,回复若不及时还望见谅。谢谢各位了。

袁家小黑球的主页 袁家小黑球 | 小虾三级 | 园豆:1045
提问于:2013-07-25 00:42
< >
分享
所有回答(1)
0

好几天都没人回答我的问题,我自己回答一下吧。

我现在的解决方案时,手动查询数据库,每次获取到最新创建的实例ID,然后记录下来,测试完成后,使用存储过程删除创建的。

袁家小黑球 | 园豆:1045 (小虾三级) | 2013-07-29 10:51
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册