我想得到一些关于我的第一个PHPUnit测试用例的反馈。
测试的主题是PHP应用程序中的简单配置类。它用于创建,存储和检索配置设置。
设置存储在类中的数组中。每个设置都具有以下属性:
键(例如frontend:menu:bgcolor
)
类型(string
之一,int
,hexcolor
,boolean
)
值(混合)
只读(布尔值)
首先必须创建每个设置。在创建时,为每个设置分配一个类型,只读标志(默认为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
(失败,未定义键)
问题:
更新:到目前为止我已提出的建议:
- 字符串长度检查
- 涉及其余数据类型
的测试boolean
和hexcolor
- 目前不需要进行关键命名测试,但将来也是如此。
答案 0 :(得分:2)
测试用例是有意义的,我不认为它们是完整的,因为你没有针对hexcolor或boolean值的任何测试用例。此外,您可能希望对字符串值的长度设置某种限制。
答案 1 :(得分:2)
我会为缺少的类型(布尔值和十六进制)添加测试,包含有效和无效的值。)
我不知道你是否对密钥的命名约定有一些限制,例如你可以为密钥分配有效和无效的名称吗?
你应该绝对添加的另一个测试,对我来说:如果你创建一个键两次会发生什么? 有不同的类型?
顺便说一句,你做得很好,对我来说
答案 2 :(得分:1)
你的测试涵盖了所有可以完成的工作,我认为它相当不错。 单元测试不必详尽无遗(很少可能)
我只会添加这样的内容:
可能还有一些针对hexcolor和布尔类型验证的测试
答案 3 :(得分:0)
我会添加用于更改现有密钥类型的测试。此外,对于现有的非readonly密钥,只需更改为readonly,并在更改类型和不更改类型的情况下执行此操作。
另外,你的int类型是否有范围? php可能因平台而异。 float看起来像int。