何时使用基于属性的测试?
Posted
技术标签:
【中文标题】何时使用基于属性的测试?【英文标题】:when to use Property-Based Testing? 【发布时间】:2022-01-16 20:12:02 【问题描述】:我正在尝试学习基于属性的测试(PBT)我想我知道如何实施它,但我应该什么时候应用 PBT?
例如,在这种情况下,我试图比较函数 getCurrentName() 是否返回预期的名称。我应该随机化这个测试吗?
@Test
public void getNameTest()
assertEquals(nameProxy, proxyFoto.getCurrentName());
【问题讨论】:
nameProxy
和 proxyFoto
是什么?
nameProxy
是一个值为 "name" 的字符串,proxyFoto
是一个具有 long id; a String name; Date date;
的对象,getCurrentName 只返回名称
你是在问是否应该测试一个 property getter? You can,但它相当 contentious whether you should - 甚至在我们开始考虑基于示例的测试与属性之前 -基于测试。
【参考方案1】:
您的问题太笼统了,无法给出具体答案。我建议你看一些关于如何提出好的属性的文章,例如https://johanneslink.net/how-to-specify-it/
至于您的具体示例,如果为 current name
编写属性是否有意义,答案取决于以下几点:
属性和 PBT 是关于发现和伪造关于被测代码行为的假设。如果没有任何错误,那么任何形式的自动化测试都可以被认为是不必要的。如果有相当多的边缘情况和路径可能显示出意外行为,那么 PBT 看起来是一种值得的方法。
作为一个务实的建议:开始将您的一些示例测试转化为属性,看看哪些测试发挥了作用。然后尝试添加其他属性,例如使用我链接到的文章中的想法。
【讨论】:
以上是关于何时使用基于属性的测试?的主要内容,如果未能解决你的问题,请参考以下文章
React 测试库:何时使用 userEvent.click 以及何时使用 fireEvent
如何使用 FsCheck 生成随机数作为基于属性的测试的输入