使用NModel自动生成测试用例(3)

发表于:2015-09-25来源:uml.org.cn作者:不详点击数: 标签:测试用例
上面的代码稍微解释一下,标注了[Action]的函数,就是抽象出来的程序所支持的动作,例如Logout;而在动作函数名后面加上Enabled的函数,是NModel用来判定指

  上面的代码稍微解释一下,标注了[Action]的函数,就是抽象出来的程序所支持的动作,例如Logout;而在动作函数名后面加上Enabled的函数,是NModel用来判定指定的动作是否可以执行,例如LogoutEnabled函数。

  Feature属性,我们现在不讲,NModel用这个属性来标识一个大的功能。

  另外要注意的是,在NModel里面,集合Set、Map是不可变的,即创建好了以后,就不能从里面删除和添加新元素了。每一次修改都会创建一个新的Set、Map实例。所以你会看到类似下面的用法:

  ActiveLoginRequests = ActiveLoginRequests.Add(user, LoginStatus.Success);

  最后,你需要采用一个工厂模式的方式,告诉NModel分析哪一个Feature,创建测试用例

public class WebSiteModel

{

public static ModeState State = ModeState.Initializing;

 

public static ModelProgram CreateLoginModel()

{

return new LibraryModelProgram(typeof(WebSiteModel).Assembly,

"TrainMode", new Set<string>("Login"));

}

 

[Action]

public static void Initialize()

{

State = ModeState.Running;

}

 

public static bool InitializeEnabled() { return State == ModeState.Initializing; }

 

public static Set<User> UsersLoggedIn = Set<User>.EmptySet;

}

  编译通过以后,先用NModel提供的图形化模型验证工具查看一下生成的模型是否正确。NModel自带的 mpv.exe是用来验证模型的,但是 mpv.exe使用到一个图形布局程序GLEE需要单独下载,下载后,将Microsoft.GLEE.*.dll拷贝到NModel的bin文件夹里,就可以执行mpv.exe了。

原文转自:http://www.uml.org.cn/Test/201005051.asp