你认为这是一个合适的测试案例吗?

时间:2010-03-11 00:00:35

标签: php unit-testing phpunit

我想得到一些关于我的第一个PHPUnit测试用例的反馈。

测试的主题是PHP应用程序中的简单配置类。它用于创建,存储和检索配置设置。

设置存储在类中的数组中。每个设置都具有以下属性:

  • 键(例如frontend:menu:bgcolor

  • 类型(string之一,inthexcolorboolean

  • 值(混合)

  • 只读(布尔值)

首先必须创建每个设置。在创建时,为每个设置分配一个类型,只读标志(默认为false)和默认值。

班级方法:

public function create($key, $value, $type = "string", $read_only = false) 
public function set($key, $value)   
public function get($key)  

我正在运行的测试:

(ok)和(fail)是测试的预期结果。

  • 创建名为test的设置,其类型为string,初始值为xyz(确定)

  • 加载设置test并期望返回值xyz(确定)

  • 将设置test设置为abc(确定)

  • 加载设置test并期望返回值abc(确定)

  • 加载设置töst(失败,密钥不存在)

  • 创建名为test_read_only的设置,其类型为string,初始值为Mary had a little lamb,只读标志设置为true(ok)

  • 将名为test_read_only的设置设为Peter had a big lamb(失败,密钥为只读)

  • 加载名为test_read_only的设置并期望返回值Mary had a little lamb(确定)

  • 创建名为test_integer的设置,其类型为int,初始值为5,只读标志设置为true(ok)

  • 创建名为test_integer_second的设置,类型为int,初始值为5.23049505906(失败,初始值类型错误)

  • 创建名为test_weird的设置,类型为sdasfäödsf#ädfsaö(失败,找不到类型)

  • 将名为test_weird的设置设为Peter had a little lamb(失败,未定义键)

问题:

  • 这个测试用例对你有意义吗?
  • 您认为这是一个完整的测试案例吗?
  • 你会以不同的方式做什么,或者另外做什么?
  

更新:到目前为止我已提出的建议:

     
      
  • 字符串长度检查
  •   
  • 涉及其余数据类型booleanhexcolor
  • 的测试   
  • 目前不需要进行关键命名测试,但将来也是如此。
  •   

4 个答案:

答案 0 :(得分:2)

测试用例是有意义的,我不认为它们是完整的,因为你没有针对hexcolor或boolean值的任何测试用例。此外,您可能希望对字符串值的长度设置某种限制。

答案 1 :(得分:2)

我会为缺少的类型(布尔值和十六进制)添加测试,包含有效和无效的值。)

我不知道你是否对密钥的命名约定有一些限制,例如你可以为密钥分配有效和无效的名称吗?

你应该绝对添加的另一个测试,对我来说:如果你创建一个键两次会发生什么? 有不同的类型?

顺便说一句,你做得很好,对我来说

答案 2 :(得分:1)

你的测试涵盖了所有可以完成的工作,我认为它相当不错。 单元测试不必详尽无遗(很少可能)

我只会添加这样的内容:

  • 将test_integer设置为“abc”(失败,错误类型)

可能还有一些针对hexcolor和布尔类型验证的测试

答案 3 :(得分:0)

我会添加用于更改现有密钥类型的测试。此外,对于现有的非readonly密钥,只需更改为readonly,并在更改类型和不更改类型的情况下执行此操作。

另外,你的int类型是否有范围? php可能因平台而异。 float看起来像int。