如何对项目未引用特定程序集进行单元测试

时间:2013-09-20 15:40:18

标签: c# .net unit-testing nunit

我们将库中的某些接口分开,并且不希望在调用项目中直接引用具有实现的库。

答:调用代码项目。 B:界面项目。 C:实施项目

A应该引用B而不是C

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

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

2 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:2)

这个答案只是为了记住我自己使用的单元测试。但随意投票: - )

[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);
}