如何对项目不引用特定程序集进行单元测试
本文关键字:程序集 单元测试 引用 项目 | 更新日期: 2023-09-27 18:32:20
我们将一些接口分离到它自己的库中,并且不希望在调用项目中直接引用带有实现的库。
答:调用代码项目。B:接口项目。C:实施项目
A 应引用 B 而不是 C
我们希望通过单元测试来确保这一点。
使用 NUnit 进行单元测试会是什么样子?
不能说我曾经这样做过。您可以尝试使用 Assembly.GetReferencedAssemblies?
这个答案只是为了记住单元测试供我自己使用。但请随意投票:-)
[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);
}