对于返回不同对象类型的方法,使用多个测试用例进行单元测试

本文关键字:测试用例 单元测试 方法 返回 于返回 类型 对象 | 更新日期: 2023-09-27 18:08:37

我有一个静态方法:

public static ReturnBaseClass GetValue(SimpleBaseClass simpleBaseClass)
{
    ReturnBaseClass returnBaseClass = null;
    if (simpleBaseClass is simpleInheritedClass1)
    {
        returnBaseClass = new ReturnInheritedClass1();
    }
    else if (simpleBaseClass is simpleInheritedClass2)
    {
        returnBaseClass = new ReturnInheritedClass2();
    }
    else if (simpleBaseClass is simpleInheritedClass3)
    {
        returnBaseClass = new ReturnInheritedClass3();
    }
    return returnBaseClass;
}

根据方法参数(simpleBaseClass)中的对象类型,方法应该返回另一种类型的对象。这个if else分支很长我想写一个简单的单元测试来测试这个。我坚持检查返回对象类型。我写了测试方法:

[TestCase(new simpleInheritedClass1(), Type ReturnInheritedClass1)]
[TestCase(new simpleInheritedClass2(), )]
[TestCase(new simpleInheritedClass3(), )]
public void GetValueTest(SimpleBaseClass simpleBaseClass, Type type)
{
}

我在第一个测试用例(类型ReturnInheritedClass1)中所做的工作不起作用。我不知道如何以这种方式转发对象类型到我的单元测试?

对于返回不同对象类型的方法,使用多个测试用例进行单元测试

尝试使用TestCaseSource属性:

    [TestCaseSource("Source")]
    public void GetValueTest(SimpleBaseClass simpleBaseClass, ReturnInheritedClassBase simpleInheritedClass)
    {
    }
    private static readonly object[] Source = new object[]
    {
        new object[] { new SimpleInheritedClass1(), new ReturnInheritedClass1()},
        new object[] { new SimpleInheritedClass2(), new ReturnInheritedClass2()}
    };