2

我正在使用 Visual Studio 2015 建模 SDK 中的 DSL 工具开发 DSL。

DSL 工作正常。问题出现在我试图编写一些单元测试来处理由 DSL 生成的一些类的地方。

我想创建 DSL 中包含的一些元素的实例,然后测试在它们上运行一些代码。

我有一个Feature属于 DSL 的课程。它是自动生成的并继承自ModelElement(来自建模 SDK)。我想创建它的一个实例并对其进行一些测试。它的构造函数需要一个Store对象(同样来自建模 SDK)。

我有以下内容:

using (var store = new Store())
using (var transaction = store.TransactionManager.BeginTransaction("create model"))
{
    var rootFeature = new Feature(store);
    // Do something with rootFeature...
}

然而,这是抛出:

Microsoft.VisualStudio.Modeling.DomainDataNotFoundException:在目录中找不到具有身份 DSL.Feature 的域对象。

怎么来的?

4

1 回答 1

1

您创建商店的方式有问题。您需要传入您的域模型类,如下例所示:

    [TestMethod]
    public void TestMethod1()
    {
        using (Store store = new Store(typeof(EntitiesModel3DomainModel)))
        {
            using (Transaction trans = store.TransactionManager.BeginTransaction())
            {
                Entity entity = new Entity(store);
                Assert.IsNotNull(entity);
            }
        }
    }

这里的 EntitiesModel3DomainModel 是我拥有的 DSL 的域模型。您需要将其替换为您自己的由 DomainModel.tt 生成的类。

于 2016-01-20T00:06:27.057 回答