问题标签 [testability]
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.
android - 视图模型中没有代码有例外吗?
一般的经验法则是视图模型中不应该有特定于 android 的代码以便于测试。
我需要将包含大量元数据的包传递给视图模型进行过滤,然后返回视图。逻辑非常密集,最好由视图模型处理。
此规则是否有任何例外,例如使用 Bundle 或其他非 Activity 或 Fragment android 类?或者有什么建议可以解决吗?
swift - 快速将可测试代码与静态方法调度相结合
最近我阅读了很多关于 Swift 运行时的内容,并且对使用静态方法调度优化我的代码越来越感兴趣。这发生在以下方法中:
- 结构方法
- final 类方法,即用 final 关键字声明为私有或在 final 类中
- 在协议扩展中定义的协议方法,而不在协议本身中声明。
问题是,这些情况都不能让我编写可测试的代码,至少不是我现在这样做的方式:在单元测试中注入被模拟替换的协议实体。
那么,是否有可能在不放弃静态方法分派的情况下编写可测试的代码,如果可以,如何去做呢?
谢谢!
java - How make code that uses global dynamic properties unit testable?
A lot of code needs to use some global flag or properties to control the flow of the application. It is necessary for a lot of scenarios to maintain a Dynamic Cache which will have a flag to lock/unlock a particular piece of (new)code.
For all such scenarios I usually write this way:
DynamicPropery
is a Singleton which periodically refreshes the cache from the DB.
The problem with this is Unit testing is little tricky, so far I've used Jmockit to get around that - and it works fine.
But I was wondering if there can be a better way to write a method like that that can be easier for Unit testing.
multithreading - 在另一个线程更改参数属性之前,使用 Mockito 验证参数属性的原始值
我正在使用 Mockito 为我的服务器编写测试。在我的测试中,它使用的是模拟 Messenger,而不是真正的 Messenger(它会尝试向客户端发送实际的 HTTP 消息)。我面临的问题是,服务器方法之一基本上是这样做的(在服务器创建的线程中,而不是测试线程中):
在我的测试中,我试图验证它在传递给时object.getProperty()
会返回 1 ,而不是 2。我已经尝试了自定义参数匹配器和参数捕获器,并且实际上都通过了一些时间,但他们没有t 可靠地通过,因为测试线程正在与即将修改“对象”的服务器线程竞争,因此返回 2。messenger.send()
object.getProperty()
我已经验证了应用程序代码没有实际的错误,因为真正的 Messenger 会立即序列化“对象”以发送给客户端,有效地复制“属性”的值,因此以后的任何修改都无关紧要。
我很清楚这可能是其中一种情况,尽管应用程序代码运行良好,但它的可测试性很差,因此为此编写良好的确定性测试(不改变整个测试基础设施)的唯一方法是修改应用程序代码以提高可测试性(在这种情况下,传递一个不可变对象而不是即将修改和重用的可变对象)。
我的问题是,有没有什么聪明的方法可以在不接触应用程序代码的情况下正确测试它?
java - 我可以在这种情况下编写任何有意义的单元测试吗?
我有这个实体 -
它目前在商家级别存储配置(键和值)。
我们现在也需要在用户级别(用户到商家的一对多映射)存储配置。
我们将这两列添加到实体中 -
entityId 现在将存储merchantId/UserId,entityType 将与字符串值“merchantid”或“user_id”指示相同。
这是一个现有的服务层方法 -
这是它上面的控制器 -
我们决定只改变服务和向下,保持控制器层不变。
用服务方法中的 findByEntityIdAndEntityTypeAndConfigKey() 替换存储库方法调用 findByMerchantIdAndConfigKey() 并进行此更改 -
我在服务层放了什么有用的单元测试用例?
如果我要模拟存储库层响应并验证 servive 方法是否返回与模拟响应相同的 MerchantConfig 实体,这不是矫枉过正吗?
相反,我觉得测试 db 值会更有用,方法是在 db 中创建一些已知条目。例如,在这种情况下,当 db 中已经有一些商家级别的配置并且要输入用户级别的配置时,应该覆盖用户级别的条目,因为配置器正在尝试取消设置所有商家级别的配置。
如果在 db 中给定商家级别的配置,测试会很有用,当调用 save config API 端点来保存用户级别的配置时,商家级别的配置被标记为非活动状态。
顺便问一下,这些测试叫什么?请给出一些解决方案,因为我已经在这场辩论中苦苦挣扎了一段时间。每次坐下来写传统的单元测试用例,我都花太多时间,还是有问题,这是单元测试无法覆盖的。请提供一些全面的指南来编写此类测试。