如何在不实例化测试类中的对象的情况下测试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.");
}
}
}
}
答案 0 :(得分:4)
您可以使用InternalsVisibileTo
属性允许其他项目访问内部类。
[assembly: InternalsVisibleTo("NameOfYourUnitTestProject")]
这将允许您的测试项目调用Util.AssertBytesEqual
。通常将在程序集级别应用的属性放在AssemblyInfo.cs
文件中。
至于测试实际方法本身,它看起来像唯一的&#39;输出&#39;,可以说是一个例外。您只需测试该方法是否为各种输入抛出异常。