【问题标题】:C# reference to the method in external DLL returns an error [duplicate]C# 引用外部 DLL 中的方法返回错误 [重复]
【发布时间】:2019-04-18 15:23:08
【问题描述】:

我正在使用 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.VerifierAcces(string, string, string) 不能通过实例引用访问;改为使用类型名称来限定它。”消息下划线。

通常情况下,我的测试应该可以运行并返回 True,但由于调用过程中的错误,我什至无法启动它。

【问题讨论】:

  • 对您怀疑为重复的问题的答案并不能解决我的问题,因为在引用方面还有另一个错误,尽管项目中正确引用了 dll。

标签: c# testing dll reference nunit


【解决方案1】:

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

使用

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

改为。

【讨论】:

  • 通过此修改,我遇到了错误“名称空间 'UT' 中不存在类型或名称空间 'VerifierAcces'。”因此,我将其更改为Assert.IsTrue(GZM.UT.VerifierAcces(psCodeUsager, psCodeApp, psCodeFonction));,但测试给出以下消息:“消息:System.IO.FileNotFoundException:无法加载文件或程序集'UT,版本=1.0.0.0,文化=中性,PublicKeyToken=null'或它的依赖项之一。系统找不到指定的文件。”。由于正确引用了 DLL,我缺少什么?
【解决方案2】:

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

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

【讨论】:

    猜你喜欢
    • 2012-03-07
    • 1970-01-01
    • 2020-02-25
    • 2018-09-26
    • 2015-11-28
    • 2021-04-14
    • 1970-01-01
    • 1970-01-01
    • 2013-04-17
    相关资源
    最近更新 更多