C# 对外部DLL中方法的C引用返回错误

C# 对外部DLL中方法的C引用返回错误,c#,testing,dll,reference,nunit,C#,Testing,Dll,Reference,Nunit,我正在使用NUnit测试由另一个组开发的DLL,但在尝试调用此外部DLL中的方法时出错,该外部DLL在我的测试项目中设置为引用。错误是:“UT”是一个名称空间,但与类型一样使用。 我尝试了几种方法,但没有一种有效。我怎样才能正确地引用它 我用这个方法尝试的方法与我开发的另一个类一起工作,而我开发的另一个类位于同一名称空间中。现在,使用外部DLL,它只是在编译之前显示错误 这是我的程序: using NUnit.Framework; namespace UnitTesting.GettingSt

我正在使用NUnit测试由另一个组开发的DLL,但在尝试调用此外部DLL中的方法时出错,该外部DLL在我的测试项目中设置为引用。错误是:“UT”是一个名称空间,但与类型一样使用。 我尝试了几种方法,但没有一种有效。我怎样才能正确地引用它

我用这个方法尝试的方法与我开发的另一个类一起工作,而我开发的另一个类位于同一名称空间中。现在,使用外部DLL,它只是在编译之前显示错误

这是我的程序:

using NUnit.Framework;

namespace UnitTesting.GettingStarted.Tests
{

    [TestFixture]
    public class TestUT
     {
        [TestCase("A12345", "CII", "10000")]

        public void TestAccessVerification(string psCodeUsager, string psCodeApp, string psCodeFonction)
            {
                UT systemUnderTest = new UT();
                Assert.IsTrue(systemUnderTest.VerifierAcces(psCodeUsager, psCodeApp, psCodeFonction));
            }
     }
}
DLL中的源代码如下所示:

using ...;

namespace GZM
{
    public class UT
    {
        public static bool VerifierAcces(string psCodeUsager, string psCodeApp, string psCodeFonction)
        {
            ... // returns true or false
        {
    {        
{
错误发生在以下行:

UT systemUnderTest = new UT();
其中,两个“UT”都带有下划线,并带有一个错误,“UT”是一个命名空间,但与类型一样使用

但是,如果我同意:

var systemUnderTest = new GZM.UT();
错误将发生在下一行,并且

systemUnderTest.VerifierAcces
将用消息成员“UT.VerifierAccessString,string,string”加下划线,无法使用实例引用访问该字符串;改为使用类型名称限定它

通常,我的测试应该工作并返回True,但由于调用过程中的错误,我甚至无法启动它。

VerifierAccess是一个静态方法,您不能从具体的对象实例调用它

使用


相反。

您不能为实例化的类访问静态方法。如果不需要将整个类作为对象,请将其设置为静态,或者为方法VerifierAccess设置非静态重写


第三个选项可能对您的用例更有意义,假设您需要UT成为一个具体对象,请参见Lennart的答案。

通过此修改,我遇到了一个错误,即名称空间“UT”中不存在类型或名称空间“VerifierAccess”。因此,我将其更改为Assert.IsTrueGZM.UT.VerifieraccesspSCodeUsager、psCodeApp、pscodefonAction;但测试给出以下消息:message:System.IO.FileNotFoundException:无法加载文件或程序集'UT,Version=1.0.0.0,Culture=neutral,PublicKeyToken=null'或其依赖项之一。系统找不到指定的文件。。由于DLL被正确引用,我遗漏了什么?对于您怀疑为重复的问题的答案并不能解决我的问题,因为存在与引用相关的另一个错误,尽管DLL在项目中被正确引用。
Assert.IsTrue(UT.VerifierAcces(psCodeUsager, psCodeApp, psCodeFonction));