0

我们在自己的库中分离了一些接口,并且不希望在调用项目中直接引用具有实现的库。

A:调用代码项目。B:接口项目。C:实施项目

A 应该引用 B 而不是 C

我们希望通过单元测试来确保这一点。

使用 NUnit 进行单元测试会是什么样子?

4

2 回答 2

3

不能说我曾经这样做过。您可以尝试使用Assembly.GetReferencedAssemblies吗?

于 2013-09-20T15:46:38.300 回答
2

This answer is just to remember the unit test for my own usage. But feel free to upvote :-)

[Test]
public void ShouldNotReferenceServiceProjectDirectly()
{
    var assembly = GetAssemblyContainingType<RouteConfig>();
    var referencedAssemblies = assembly.GetReferencedAssemblies();

    var implementationAssembly = referencedAssemblies
        .FirstOrDefault(x => x.Name == "MyNamespace.Service");

    var interfaceAssembly = referencedAssemblies
        .FirstOrDefault(x => x.Name == "MyNamespace.Service.Interfaces");

    Assert.That(implementationAssembly, Is.Null);
    Assert.That(interfaceAssembly, Is.Not.Null);
}

private static Assembly GetAssemblyContainingType<T>()
{
    return (typeof(T).Assembly);
}
于 2013-10-02T18:18:28.460 回答