单元测试内部静态类中的void方法

时间:2017-09-26 22:25:57

标签: c# unit-testing testing methods void

如何在不实例化测试类中的对象的情况下测试void方法?我理解在内部静态类中,我们无法使用“new”来创建一个对象来测试它。我通过为非静态类创建对象来进行单元测试,但是我没有处理内部静态类并且卡住了。任何指导都会很棒。

以下是有问题的课程/方法:

internal static class Util
{
    public static void AssertBytesEqual(byte[] expected, byte[] actual)
    {
        if (expected.Length != actual.Length)
        {
            Debugger.Break();
            throw new CryptographicException("The bytes were not of the expected length.");
        }

        for (int i = 0; i < expected.Length; i++)
        {
            if (expected[i] != actual[i])
            {
                Debugger.Break();
                throw new CryptographicException("The bytes were not identical.");
            }
        }
    }
}

1 个答案:

答案 0 :(得分:4)

您可以使用InternalsVisibileTo属性允许其他项目访问内部类。

[assembly: InternalsVisibleTo("NameOfYourUnitTestProject")]

这将允许您的测试项目调用Util.AssertBytesEqual。通常将在程序集级别应用的属性放在AssemblyInfo.cs文件中。

至于测试实际方法本身,它看起来像唯一的&#39;输出&#39;,可以说是一个例外。您只需测试该方法是否为各种输入抛出异常。