C# 如何单元测试项目是否未引用特定程序集
我们在自己的库中分离一些接口,不希望在调用项目中直接引用带有实现的库 A:调用代码项目。 B:接口项目。 C:实施项目 A应该引用B而不是C 我们希望通过单元测试来确保这一点C# 如何单元测试项目是否未引用特定程序集,c#,.net,unit-testing,nunit,C#,.net,Unit Testing,Nunit,我们在自己的库中分离一些接口,不希望在调用项目中直接引用带有实现的库 A:调用代码项目。 B:接口项目。 C:实施项目 A应该引用B而不是C 我们希望通过单元测试来确保这一点 使用NUnit进行单元测试会是什么样子?不能说我做过这个。你可以试着用?不能说我做过这个。您可以尝试使用?这个答案只是为了记住我自己使用的单元测试。但请随意投票:-) [测试] public void不应直接引用ServiceProjects() { var assembly=GetAssemblyContainingTy
使用NUnit进行单元测试会是什么样子?不能说我做过这个。你可以试着用?不能说我做过这个。您可以尝试使用?这个答案只是为了记住我自己使用的单元测试。但请随意投票:-)
[测试]
public void不应直接引用ServiceProjects()
{
var assembly=GetAssemblyContainingType();
var referencedAssemblys=assembly.getreferencedAssemblys();
var implementationAssembly=referencedAssembly
.FirstOrDefault(x=>x.Name==“MyNamespace.Service”);
var interfaceAssembly=referencedAssembly
.FirstOrDefault(x=>x.Name==“MyNamespace.Service.Interfaces”);
Assert.That(implementationAssembly,Is.Null);
Assert.That(interfaceAssembly,Is.Not.Null);
}
私有静态程序集GetAssemblyContainingType()
{
返回(T.组件类型);
}
这个答案只是为了记住我自己使用的单元测试。但请随意投票:-)
[测试]
public void不应直接引用ServiceProjects()
{
var assembly=GetAssemblyContainingType();
var referencedAssemblys=assembly.getreferencedAssemblys();
var implementationAssembly=referencedAssembly
.FirstOrDefault(x=>x.Name==“MyNamespace.Service”);
var interfaceAssembly=referencedAssembly
.FirstOrDefault(x=>x.Name==“MyNamespace.Service.Interfaces”);
Assert.That(implementationAssembly,Is.Null);
Assert.That(interfaceAssembly,Is.Not.Null);
}
私有静态程序集GetAssemblyContainingType()
{
返回(T.组件类型);
}
你能稍微说明一下情况吗?有一个带有接口的库。显然,具有某些实现的程序集引用此接口程序集。您想确保谁没有引用实现程序集?某个(第三个)应用程序集?您能稍微说明一下情况吗?有一个带有接口的库。显然,具有某些实现的程序集引用此接口程序集。您想确保谁没有引用实现程序集?一些(第三)应用程序程序集?次要注释:为了更加对称,您应该在分配给interfaceAssembly
的任务中使用ReferenceAssembly
。次要注释:为了更加对称,您应该在分配给interfaceAssembly
的任务中使用ReferenceAssembly
[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);
}