记录对象方法调用以生成自动测试

时间:2011-01-13 19:51:44

标签: .net testing .net-3.5 automated-tests

我有一个具有大接口的对象,我想记录在用户会话期间完成的所有方法调用。理想情况下,这一系列调用将作为源代码提供:

myobj.MethodA(42);
myobj.MethodB("spam", false);
...

然后我会将此代码转换为测试用例,以进行一种自动化的烟雾/负载测试。

WCF Load Test可以为WCF服务执行此操作,CodedUI测试记录器可以为UI执行此操作。我对POCO课程有什么选择?我有能力编辑应用程序代码并用一些记录/转发代理替换有问题的对象。

1 个答案:

答案 0 :(得分:1)

你可以想象用Rhino.Mocks做到这一点。

var code_builder = new StringBuilder();

var myobj = MockRepository.GenerateStub<IMyObj>();

myobj.Stub(x => x.MethodA(Arg<int>.Is.Anything))
    .WhenCalled(x => code_builder.AppendLine(
        string.Format("myobj.MethodA({0});", x.Arguments[0]));

myobj.Stub(x => x.MethodB(Arg<string>.Is.Anything, Arg<bool>.Is.Anything))
    .WhenCalled(x => code_builder.AppendLine(
        string.Format("myobj.MethodB({0}, {1});", x.Arguments[0], x.Arguments[1]));

一旦你记录了所有的值,你就可以在StringBuilder中接听所有电话,然后就可以做到。

创建接口的新实现实际上可能不那么重要,该接口在每个方法中以类似的方式构建代码。您可能需要实现 function ,以便用户通过会话,在这种情况下,您可以创建一个派生或装饰您的接口实现的类,并添加此代码 - 在向/从“普通”对象转发呼叫时构建功能。