使用UML序列图生成自动测试用例

时间:2019-03-24 12:39:48

标签: c# xml visual-studio uml testcase

  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. 实际结果必须是从序列图生成的测试用例。

1 个答案:

答案 0 :(得分:0)

拥有

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工作吗? 您甚至确定要通过交互/顺序图进行工作吗?互动是“有限的”,因为这不是实例行为