小编Gag*_*der的帖子

如何在被测试的类中调用方法?

我首先要说的是我对单元测试很新,我想开始使用TDD方法,但是现在我正在编写一些现有类的单元测试来验证它们在所有情况下的功能.

我已经能够使用NUnit和Rhino模拟测试我的大部分代码而没有太多麻烦.但是,我一直想知道单元测试函数最终会在同一个类中调用很多其他方法.我做不了类似的事情

classUnderTest.AssertWasCalled(cut => cut.SomeMethod(someArgs))
Run Code Online (Sandbox Code Playgroud)

因为被测试的课程不是假的.此外,如果我正在测试的方法调用被测试类中的其他方法,而这些方法又调用同一类中的方法,那么我将需要伪造大量值来测试"顶级"方法.由于我也是对所有这些"子方法"进行单元测试,我应该能够假设"SomeMethod"如果通过单元测试而无需担心这些低级方法的详细信息,则可以按预期工作.

以下是我一直在使用的一些示例代码,以帮助说明我的观点(我编写了一个类来管理使用NPOI导入/导出Excel文件):

    public DataSet ExportExcelDocToDataSet(bool headerRowProvided)
    {
        DataSet ds = new DataSet();

        for (int i = 0; i < currentWorkbook.NumberOfSheets; i++)
        {               
            ISheet tmpSheet = currentWorkbook.GetSheetAt(i);

            if (tmpSheet.PhysicalNumberOfRows == 0) { continue; }
            DataTable dt = GetDataTableFromExcelSheet(headerRowProvided, ds, tmpSheet);

            if (dt.Rows.Count > 0)
            {
                AddNonEmptyTableToDataSet(ds, dt);
            }
        }

        return ds;
    }

    public DataTable GetDataTableFromExcelSheet(bool headerRowProvided, DataSet ds, ISheet tmpSheet)
    {
        DataTable dt = new DataTable();
        for (int sheetRowIndex = 0; sheetRowIndex <= tmpSheet.LastRowNum; sheetRowIndex++)
        { …
Run Code Online (Sandbox Code Playgroud)

c# refactoring nunit unit-testing rhino-mocks

9
推荐指数
1
解决办法
2959
查看次数

标签 统计

c# ×1

nunit ×1

refactoring ×1

rhino-mocks ×1

unit-testing ×1