问题标签 [white-box]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
7957 浏览

null - 使用 null 参数调用 Powermock Whitebox

我正在尝试测试私有方法并具有以下设置:

null在我尝试将方法作为 ClassB 对象运行之前,这很好用:

这会导致以下异常:

我正在使用 Powermockito 1.5。有没有办法用nullas 参数执行方法?

0 投票
1 回答
516 浏览

ios - Objective-C 中的单元测试私有类

如何在 Objective-C 中对私有类进行单元测试?当.m 实现文件中包含 class@interface和 the时是否有可能?@implementation

项目限制不允许将私有类的接口重构为自己的头文件。

这是我想测试的整个私有类,而不是公共类的私有方法

0 投票
1 回答
1108 浏览

java - PMD 的“必须遵守”规则有哪些?

我开始使用 PMD,我真的很想知道哪些是最重要的规则,或者在使用这个工具时任何人都不能错过的规则。

我正在寻找一些带有必须在 PMD 中使用的规则列表的文章或页面,这个工具有很多规则,很难只选择其中的几个。

谢谢!

0 投票
1 回答
658 浏览

.net - 必须遵守 FxCOP 规则

我正在使用 FxCOP,我想知道哪些是最重要的规则,或者在使用此工具时任何人都不能错过的规则。

我正在寻找一些包含必须在 fxCop 中使用的规则列表的文章或页面,这个工具有很多规则,很难只选择其中的几个。

0 投票
1 回答
1503 浏览

java - 为什么使用 java.lang.ThreadGroup 不安全?

我正在寻找最佳实践,并将 PMD 应用于我的 Java EE 项目,但有一条规则说我必须避免使用 java.lang.ThreadGroup,而我现在正在使用它。

规则说这是不安全的,我想知道:为什么?谢谢

0 投票
2 回答
609 浏览

oop - 单元测试 - 白盒与黑盒策略

我发现,当我写单元测试的时候,尤其是那些不返回值的方法,我大多是用白盒测试的方式来写测试。我可以使用反射来读取私有数据,以检查它在方法执行后是否处于正确的状态等......

这种方法有很多限制,其中最重要的是

  1. 如果您返工方法,您需要更改您的测试,即使 API 保持不变
  2. 从信息隐藏(封装)的角度来看这是错误的——测试是我们代码的一个很好的文档,所以阅读它的人可能会得到一些关于实现的不必要信息

但是,如果方法不返回值并使用私有数据进行操作,那么像使用黑盒测试范例一样进行测试是非常困难的(几乎不可能)。

那么,有什么想法可以很好地解决这个问题吗?

0 投票
1 回答
898 浏览

unit-testing - 什么时候适合在单元测试中绕过封装?

我最近开始了解powermock 的 Whitebox功能。(总而言之,它允许您直接测试私有方法或直接从单元测试中修改私有成员——同时保持私有!)

我知道有一些思想框架不赞成对可见方法以外的任何东西进行单元测试,但是该死的,有时你只需要一个简单的测试来确保深层帮助方法正在做它应该做的事情......没有通过准备父方法过滤到您的方法所需的参数和模拟可能会产生巨大的开销。然后您必须做一些魔术来提取该内部方法的结果。简而言之,有时测试这些内部方法需要最复杂且最难遵循的单元测试。(而且,仅供参考,我们公司有 100% 单元测试覆盖率的政策。这些方法必须经过测试!

我知道一种方法更改​​方法访问器以允许进行单元测试(例如,从privateto更改protected,但 powermock Whitebox 允许直接测试而不更改源代码。

尽管如此,妈妈总是说,“仅仅因为你可以,并不意味着你应该这样做。”

测试这样的内部方法是否合适?如果是这样,我应该使用什么经验法则?

0 投票
1 回答
263 浏览

java - 存根/模拟私有方法

我目前正在测试一种方法updateIssuesTable()。此方法是私有 void 方法。更糟糕的是,这个方法内部是对 的调用getConnection(),它返回 a Connection,并且依赖于几个私有变量,这些私有变量依赖于一个初始化方法,而这个初始化方法当然依赖于其他东西。

长话短说,这行代码: Connection conn = getConnection();

我根本不想执行,我只需要一个模拟的 Connection 来继续执行。下面是测试方法:

我正在测试的方法如下:

编辑:我在我的测试类中创建了一个模拟连接:

0 投票
1 回答
736 浏览

testing - 白盒测试如何失败,而黑盒测试如何成功(反之亦然)?

我有一个考试并试图找到这个问题的答案,但到目前为止我没有成功。问题是:

举个例子白盒测试说一切正常,但黑盒测试说有错误。一个示例黑盒测试表明一切正常,但白盒测试表明存在错误。

0 投票
1 回答
1187 浏览

c# - 语句覆盖是否算作假 if 语句?

检查我的代码的语句覆盖率时:

使用两个测试用例(例如测试 1:x = 6,y = 10 和测试 2:= 3,y =5)

我不确定语句覆盖率是等于 100% 还是 66%,因为我不确定您是否计算最后一个 if 语句,因为它两次都是错误的。