目录
介绍
实现
使用代码
- 下载源代码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!
}
}