Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/265.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何单元测试项目是否未引用特定程序集_C#_.net_Unit Testing_Nunit - Fatal编程技术网

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

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

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

A应该引用B而不是C

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


使用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);
}