Vin*_*nay 6 tdd unit-testing test-suite testcase
我正在编写一个解析器,为每个命令生成32位操作码.例如,对于以下语句:
set lcl_var = 2
Run Code Online (Sandbox Code Playgroud)
我的解析器生成以下操作码:
// load immdshort 2 (loads the value 2)
0x10000010
// strlocal lclvar (lcl_var is converted to an index to identify the var)
0x01000002
Run Code Online (Sandbox Code Playgroud)
请注意,lcl_var可以是任何东西,即可以给出任何变量.如何为此编写单元测试用例?我们可以避免对值进行硬编码吗?有没有办法让它通用?
您没有指定编写解析器所用的语言,因此为了论证,我将假设您正在使用面向对象的语言。
如果是这种情况,那么依赖注入可以帮助您。如果发出的操作码的目标是类的实例(例如 File),请尝试为发射器类提供一个构造函数,该构造函数采用该类型的对象作为发出的代码的目标。然后,从单元测试中,您可以传入一个模拟对象,该对象是目标类的子类的实例,捕获特定语句发出的操作码,并断言它们是正确的。
如果您的目标类不易扩展,您可能需要基于它创建一个目标类和您的模拟类都可以实现的接口。
| 归档时间: |
|
| 查看次数: |
4171 次 |
| 最近记录: |