c# - 如何在编写单元测试时访问方法的局部变量

标签 c# unit-testing reflection scope

给定以下代码:

public class Employee
{
    public void CalculateEmpSal(int empId,int salary)
    {      
        // local varibles
        int Basic; 
        int HRA;       

        // Calculate employee salary
        Basic = salry * (0.40);
        HRA = Basic * (0.50);
    }
}

是否可以为可以访问BasicHRA 局部变量的CalculateEmpSal 方法编写单元测试?我无法使用反射访问这些变量。还有其他方法可以从我的单元测试中访问它们吗?

最佳答案

你不能……也不应该。

您应该测试由您的方法引起的副作用/状态变化,而不是底层实现细节。就目前而言,您的方法没有副作用,因此无需测试。

如果您更改它以返回一些有用的东西(可能是 HRA),那么您将有一些东西可以在方法之外进行测试。

public int CalculateEmpSal(int empId,int salary)
{      
    // local varibles
    int Basic; 
    int HRA;       

    // Calculate employee salary
    Basic = salry * (0.40);
    HRA = Basic * (0.50);
    return HRA;
}

如果您只是想检查这些值,那么您应该使用调试器单步调试代码。

顺便说一句,您使用的是 float 和整数...您确定要这样做吗?

关于c# - 如何在编写单元测试时访问方法的局部变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31065791/

相关文章:

c# - 覆盖先前设置的 Typemock 隔离器的功能行为 (WillThrow()/DoInstead())

python - 测试一个使用子进程生成 bash 子 shell 的 python 脚本..这可能吗?

c# - 如何以编程方式订阅对象的所有事件?

java - 检索集合的类型

c# - WinRT 从视频流中提取帧

c# - 我可以更改默认配置文件吗?

c# - 如何在 log4net 中为多个 Logger 使用 1 个 FileAppender

javascript - 如何分别测试 ExpressJS 路由和 'controller'

unit-testing - 如何对调用 g.formatDate 的标签库进行单元测试?

java - 如何使用反射实例化非公共(public)最终类?