c# - 使用 UML 序列图生成自动测试用例
问题描述
我已经完成了序列图并将其转换为 XML 文件,然后我使用 C# 开发了解析器以从该 XML 文件中提取测试用例,但是解析器仍然无法正常工作,我该如何提取我需要的确切标签和元素用于生成测试用例?
这是针对 c# 控制台应用程序 Visual Studio 2017 的。
public XDocument GetDiagramXml(string diagramName, string diagramXmlFile) { XNamespace UML = "omg.org/UML1.3"; XDocument diagramElements = XDocument.Load(diagramXmlFile); XElement test = XElement.Load(diagramXmlFile); IEnumerable<XElement> elements = diagramElements.Descendants("XMI.content"); foreach (XElement element in elements) { XElement xmiElement2 = element.Element(UML + "Diagram"); XElement xmiElement3 = null; if (xmiElement2.Attribute("name").Value == diagramName) xmiElement3 = xmiElement2.Element(UML + "Diagram.element"); var output = xmiElement3.Descendants(UML + "DiagramElement"); diagramElements = XDocument.Load(xmiElement3.CreateReader()); } return diagramElements; } public Dictionary<string, string> GetDiagramElments(XDocument diagramRawXml) { Dictionary<string, string> diagramExtractedElements = new Dictionary<string, string>(); return diagramExtractedElements; } public Dictionary<string, Dictionary<string, string>> GetDiagramMessages(Dictionary<string, string> diagramExtractedElement, string diagramXmlFile) { Dictionary<string, Dictionary<string, string>> messagesList = new Dictionary<string, Dictionary<string, string>>(); return messagesList; }
实际结果一定是序列图生成的测试用例。
解决方案
有
XNamespace UML = "omg.org/UML1.3"; ... XElement xmiElement2 = element.Element(UML + "Diagram"); ... xmiElement3 = xmiElement2.Element(UML + "Diagram.element"); ... var output = xmiElement3.Descendants(UML + "DiagramElement");
你做
XElement xmiElement2 = element.Element("omg.org/UML1.3Diagram"); ... xmiElement3 = xmiElement2.Element("omg.org/UML1.3Diagram.element"); ... var output = xmiElement3.Descendants("omg.org/UML1.3DiagramElement");
可能缺少'/',可以解决
XNamespace UML = "omg.org/UML1.3/";
但不确定这是否足以阅读元素,因为一切都很“奇怪”
显然您没有读取模型文件(搜索交互),但该文件是 UML 图交换(因为DiagramElement),您怎么能拥有UML1.3
?用什么工具生成的?
您确定要从 UML Diagram Interchange 工作吗?您确定要使用交互/序列图吗?交互是“有限的”,因为这不是例如行为
推荐阅读
- azure - 如何将字符串参数列表传递给 Azure DevOps 模板
- reactjs - 无法在 Jest Test 模块中的模块外使用 import 语句
- rust - 在 rust-webpack-template 的“reqwest”中找不到“阻塞”
- javascript - Google AdSense 审核不断返回,但没有内容错误(JavaScript 客户端呈现)
- javascript - 将多个json对象转换为对象数组
- html - 使用 HTML5 模式进行验证
- reactjs - react js创建本地数据库的方法
- mysql - MySQL 5.7.25 [innoDB],索引基数突然重置/变回 1
- c# - C# 字符串和数字正则表达式
- angular - Angular 9 与 ui 路由器混合导致尝试在设置 AngularJS 注入器之前获取它。如何调试/修复?