我已经编写了一个类和许多单元测试,但我没有使其线程安全.现在,我想让这个类线程安全,但为了证明它并使用TDD,我想在开始重构之前编写一些失败的单元测试.
有什么好办法吗?
我的第一个 idea 是创建几个线程,让它们以不安全的方式使用这个类.用足够多的线程做足够多的次数,我肯定会看到它崩溃.
我已经编写了一个类和许多单元测试,但我没有使其线程安全.现在,我想让这个类线程安全,但为了证明它并使用TDD,我想在开始重构之前编写一些失败的单元测试.
有什么好办法吗?
我的第一个 idea 是创建几个线程,让它们以不安全的方式使用这个类.用足够多的线程做足够多的次数,我肯定会看到它崩溃.
有两种产品可以帮助您做到这一点:
两者都会判断代码中的死锁(通过单元测试),我认为Chess也会判断竞争条件.
使用这两种工具都很容易-您只需编写一个简单的单元测试,然后多次运行代码,并判断代码中是否可能出现死锁/争用条件.
Edit:
Google发布了一个名为thread-race-test的工具,该工具可以在运行时(而不是在测试期间)判断竞态条件.
它不会找到所有的竞争条件,因为它只分析当前运行,而不是像上面的工具那样分析所有可能的场景,但它可能会帮助您在竞争条件发生后找到它.
Update: