假设我们有这个方法:
bool IsValid()
{
var argument = StaticClass.CurrentArgument;
return argument > 0;
}
它具有检查逻辑是否正常工作的单元测试。但是当方法是从不同的线程中拉取时,这种情况不包括在内。那么,检查线程安全的测试——它更接近于单元测试还是集成测试?此外,如果有适合这种情况的众所周知的其他类型的测试,也很高兴知道。
同意线程安全性好检查,假设在这个方法中直接加锁就可以实现。
在我的理解中,它更接近集成,因为测试的目的不是检查业务逻辑(其验证已经是结果),而是代码在实战条件下的使用。
在回答这个问题时,了解线程安全对业务的重要性可能很重要,即 就业务逻辑而言。而这似乎并没有那么重要。毕竟,例如,锁可以在方法调用之前,IsValid()一切也会正常进行。但另一方面,如果我们在方法契约中明确指出该方法是线程安全的(例如,在方法名称或文档中),我们可能应该在此处将其作为方法的逻辑组件进行测试。
测试分为模块化和集成是基于是否使用外部依赖以及你测试的单元有多大。外部依赖是数据库、第三方网络服务等。
如果没有外部依赖性,这意味着 a) 测试设置很简单,b) 测试运行得非常快。
如果存在外部依赖性,则始终意味着您正在测试更大的代码组件(即将不同的组件集成在一起)。
那。检查线程安全的测试是单元测试。(如果您突然想使用外部依赖项测试线程安全性,请三思而后行。)
聚苯乙烯
业务逻辑不是用于战斗条件还是什么?:)