我们将库中的某些接口分开,并且不希望在调用项目中直接引用具有实现的库。
答:调用代码项目。 B:界面项目。 C:实施项目
A应该引用B而不是C
我们希望通过单元测试来确保这一点。
使用NUnit进行单元测试会是什么样的?
答案 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);
}