您当前的位置: 首页 > 

寒冰屋

暂无认证

  • 0浏览

    0关注

    2286博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

通用测试框架

寒冰屋 发布时间:2020-08-26 20:20:22 ,浏览量:0

目录

介绍

实现

使用代码

  • 下载源代码139.1 KB
介绍

该工具是一个非常通用的框架,可以动态地对任何测试用例进行“编程”,这是一种动态的“最终状态机”,可以按定义的顺序执行任何“测试砖(brick)”。

每块“砖(brick)”的参数在很大程度上都是可配置的,一个“砖(brick)”的输出可以重定向到任何其他“砖(brick)”的输入。您可以通过在“InputRow”列的组合框中选择前一个“砖(brick)”的输出来引用它的输出。

可以通过添加/删除“砖(brick)”的顺序来轻松更改:

创建测试用例后,可以将其保存在* .ETF文件中,以便以后使用此预定义的测试用例:

运行测试后,将显示一个带有结果的消息框,协议文件将写入“%appdata%”:

29.07.2020 15:28:34: Creating Test Brick: OneStep ...
29.07.2020 15:28:34: Creating Test Brick: FindRegExp ...
29.07.2020 15:28:34: Creating Test Brick: AssertEqual ...
29.07.2020 15:34:17: STEP 1
29.07.2020 15:34:20: STEP 2
29.07.2020 15:34:20: Search for OK
29.07.2020 15:34:20: Found 1 times
29.07.2020 15:34:20: STEP 3
29.07.2020 15:34:20: EQ
29.07.2020 15:35:38: **** Test OK! ****
实现

 有趣的一点是,如何通过添加或删除行来动态更改WPF GUI(后面的代码):

这个Grid是我们需要调整的对象。首先,我们清除“旧”网格并添加所有列和行:

private void CreateDataGrid()
{
 // Clear grid
 grdData.ColumnDefinitions.Clear();
 grdData.RowDefinitions.Clear();

 // Create Columns
 int nCol = 0;
 int nRow = 0;
 
 RowDefinition gridRow = new RowDefinition();
 gridRow.Height = new GridLength(25);
 grdData.RowDefinitions.Add(gridRow);

从基础实例创建派生类的可能性也很有趣:

TestBrickFactory通过知道基本的TestClass名字来“建立”一个特殊的“砖” (激活剂:https://docs.microsoft.com/en-us/dotnet/api/system.activator):

public static TestClass CreateTestBrick(TestClass oBase, string sName)
{
    Logger.Instance.Write("Creating Test Brick: " + sName + "...");
    string sBrickName = "TestingFramework.Model." + sName;

    var oType = Type.GetType(sBrickName);
    TestClass oClass = null;

    if (oType != null)
        oClass = (TestClass)Activator.CreateInstance(oType, oBase);

    return oClass;
}
使用代码

添加新的测试“blocks”非常容易(感谢反射):这需要创建一个从抽象TestClass派生的新类并覆盖单个虚拟方法ExecuteTestStep():

class OneStep : TestClass
{
    public OneStep(TestClass oBase) : base(oBase)
    {
        TestBrick = "OneStep";
    }

    public override string ExecuteTestStep()
    {
       // Do Smth!
    }
}

 

关注
打赏
1665926880
查看更多评论
立即登录/注册

微信扫码登录

0.1014s