首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何处理大量非常具体的用例

如何处理大量非常具体的用例
EN

Software Engineering用户
提问于 2018-07-18 21:21:08
回答 1查看 185关注 0票数 1

所以我正在编写一个程序运行一些不同的测试。运行哪些测试取决于用户选择哪些UI元素。例如,在一个表单上,我有7个单选按钮和6个复选框。对于每一个变化,从2-5个不同的测试都会运行.用户可以选择任何组合(只有一个单选按钮除外)并为该选择运行测试。我确定要运行哪些测试的方法是非常多余的,我想知道是否有一种更清晰的方法。下面是一个示例:

代码语言:javascript
运行
复制
if(radiobutton1.checked)
{
  if(checkbox1.checked)
  {
    runtest1(param a, param b);
    runtest2(param b, param f);
  }
  if(checkbox2.checked)
  {
    runtest1(param f, param n);
    runtest2(param c, param l);
    runtest3(param f, param d);
  }
}
else if(radiobutton2.checked)
//and so on...

所以我有42个用例,我正在为每个用例运行2-5个子测试。有更好的方法吗?

EN

回答 1

Software Engineering用户

回答已采纳

发布于 2018-07-18 23:51:17

你可以从相反的方向处理问题。

创建带有两个函数的类型,一个用于运行测试,另一个用于检查需要运行的测试。

代码语言:javascript
运行
复制
public class Test
{
    public Action Run { get; set; }
    public Func<bool> CanRun { get; set; }
}

然后,您只需使用它们自己的谓词定义所有测试。

代码语言:javascript
运行
复制
var test1 = new Test
{
    Run = () => runtest1(param a, param b),
    CanRun = () => radiobutton1.checked && checkbox1.checked
};
var test2 = new Test
{
    Run = () => runtest2(param b, param f),
    CanRun = () => radiobutton1.checked && checkbox1.checked
};
var test3 = new Test
{
    Run = () => runtest1(param f, param n),
    CanRun = () => radiobutton1.checked && checkbox2.checked
};
var test4 = new Test
{
    Run = () => runtest2(param c, param l),
    CanRun = () => radiobutton1.checked && checkbox2.checked
}

// Then tests execution will looks much simplier
var testsToRun = 
    new[] { test1, test2, test3, test4 }.Where(test => test.CanRun());

foreach (var test in testsToRun)
{
    test.Run();
}

在添加或删除测试时,当您不需要接触与其他测试相关的代码时,上面的方法应该使维护变得更容易,因为每个测试都是与其他测试隔离的。

票数 5
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/375447

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档