C#引用外部DLL中的方法返回错误[重复]

问题描述 投票:-5回答:2

这个问题在这里已有答案:

我正在使用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.4VerifierAcces(字符串,字符串,字符串)不能使用实例引用访问;请使用类型名称限定它。“

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

c# testing dll reference nunit
2个回答
1
投票

VerifierAcces是一个静态方法,你不能从具体的对象实例中调用它。

使用

Assert.IsTrue(UT.VerifierAcces(psCodeUsager, psCodeApp, psCodeFonction));

代替。


0
投票

您无法访问实例化的类的静态方法。如果不需要将整个类作为对象,则使整个类静态,或者对方法VerifierAcces进行非静态覆盖。

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

© www.soinside.com 2019 - 2024. All rights reserved.