首页 > 解决方案 > 使用 UML 序列图生成自动测试用例

问题描述

  1. 我已经完成了序列图并将其转换为 XML 文件,然后我使用 C# 开发了解析器以从该 XML 文件中提取测试用例,但是解析器仍然无法正常工作,我该如何提取我需要的确切标签和元素用于生成测试用例?

  2. 这是针对 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;
    
        }
    
  3. 实际结果一定是序列图生成的测试用例。

标签: c#xmlvisual-studioumltestcase

解决方案


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 工作吗?您确定要使用交互/序列图吗?交互是“有限的”,因为这不是例如行为


推荐阅读