如何创建一个调用作为参数传递的其他函数的辅助函数

时间:2014-02-11 04:54:18

标签: c# testing delegates parallel.foreach

我有一个用于压力测试的功能,我想强调测试多个功能。我在这里进行压力测试的功能是GetParameters(reportUri, SessionContext);

如何添加辅助函数,我可以在其中传递一个参数,如动作体或委托(这很好,但我有多个函数与不同的参数)。它只是动态地替换this.RemoteReportingServiceFactory.CreateReportParameterProvider().GetParameters(reportUri, SessionContext);来执行所有步骤。除了上面提到的行

之外,整个函数体将是相同的
public void GetParameters()
{
    for (int i = 0; i < 100; i++)
    {
        Log.Message(TraceEventType.Information, "Start of {0} sequential iteration with 5 parallel stress runs".InvariantFormat(i));
        Parallel.For(0, 2, parameterIteration =>
        {
            Log.Message(TraceEventType.Information, "Stress run count : {0}".InvariantFormat(parameterIteration + 1));
            string reportUrl = TeamFoundationTestConfig.TeamFoundationReportPath("TaskGroupStatus");
            ReportUri reportUri = ReportUri.Create(reportUrl);
            Log.Message(TraceEventType.Information, "ReportUri = {0}".InvariantFormat(reportUri.UriString));
            IList<Parameter> parameters = this.RemoteReportingServiceFactory.CreateReportParameterProvider().GetParameters(reportUri, SessionContext);
        });
    }
}

如果不够清楚,请告诉我。我可以根据请求编辑我的问题

1 个答案:

答案 0 :(得分:0)

如何将方法更改为

public void GetParameters(Func<ReportUri, SessionContext, IList<Parameter>> returnStuff)
    {
        for (int i = 0; i < 100; i++)
        {
            Log.Message(TraceEventType.Information, "Start of {0} sequential iteration with 5 parallel stress runs".InvariantFormat(i));
            Parallel.For(0, 2, parameterIteration =>
            {
                Log.Message(TraceEventType.Information, "Stress run count : {0}".InvariantFormat(parameterIteration + 1));
                string reportUrl = TeamFoundationTestConfig.TeamFoundationReportPath("TaskGroupStatus");
                ReportUri reportUri = ReportUri.Create(reportUrl);
                Log.Message(TraceEventType.Information, "ReportUri = {0}".InvariantFormat(reportUri.UriString));
                IList<Parameter> parameters = returnStuff(reportUri, SessionContext);
            });
        }
    }