我已经完成了序列图并将其转换为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;
}
实际结果必须是从序列图生成的测试用例。
答案 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工作吗? 您甚至确定要通过交互/顺序图进行工作吗?互动是“有限的”,因为这不是实例行为