相关疑难解决方法(0)

什么是依赖注入?

已经发布了几个关于依赖注入的具体问题的问题,例如何时使用它以及它有哪些框架.然而,

什么是依赖注入以及何时/为什么应该或不应该使用它?

language-agnostic design-patterns dependency-injection terminology

2984
推荐指数
25
解决办法
80万
查看次数

生成随机输出的单元测试代码的最佳方法是什么?

具体来说,我有一个方法从列表中选择n个项目,其中%的符合一个标准,b%符合第二个,依此类推.一个简单的例子是选择5个项目,其中50%具有值为'true'的给定属性,50%'false'; 该方法有50%的时间返回2真/ 3假,另外50%,3真/ 2假.

从统计学上讲,这意味着超过100次运行,我应该得到大约250真/ 250假,但由于随机性,240/260是完全可能的.

对此进行单元测试的最佳方法是什么?我假设即使技术上300/200是可能的,如果发生这种情况,它应该可能无法通过测试.对于这样的案例,是否存在普遍接受的容忍度?如果是这样,您如何确定这是什么?

编辑:在我正在处理的代码中,我没有使用伪随机数生成器或强制它随时间平衡的机制,因为挑选出的列表是在不同的生成机器.我需要能够证明,随着时间的推移,符合每个标准的平均项目数将趋向于所需的百分比.

statistics unit-testing probability

26
推荐指数
1
解决办法
2709
查看次数

如何以一定的随机性对函数进行单元测试

我有返回 0 到 6 之间的三个随机元素数组的函数。它确保所有元素不能具有相同的值(您可以有两个具有相同值的元素,但不能是三个)。下面是一个示例代码。

public function getRandom() {
    $array = array(0, 0, 0);
    do {
        $array[0] = rand(0, 6);
        $array[1] = rand(0, 6);
        $array[2] = rand(0, 6);
    } while(($array[0] == $array[1]) && ($array[0] == $array[2]));
    return $array;
}
Run Code Online (Sandbox Code Playgroud)

我对单元测试有点陌生,唯一能想到的就是测试这个

  1. 测试此函数 1,000 次并检查它是否返回 0 到 6 之间的数据,并且所有三个元素不能具有相同的值。
  2. 找到一种方法来覆盖函数 rand() 以便它返回我们想要的:
    • 返回使所有三个元素具有相同值的值,然后返回具有相同值的两个元素的值。然后,返回具有不同值的所有元素的值。

我想知道是否有任何方法或我的哪种方法更适合这种情况。

php phpunit unit-testing

4
推荐指数
1
解决办法
3144
查看次数