I have a few methods that are impacted by concurrency. Specifically "Rush" (a.k.a Race) conditions. Should I unit test them or integrate/black-box test them?
I think that setting up a unit test might be a rather difficult task, but also is integration test...
Unit tests must be deterministic, so concurrency doesn't belong there. (I keep my unit tests completely synchronous.)
Go for integration tests to sniff out race conditions — but be prepared for false positives. In other words, the tests passing is no proof that you don't have a race condition. But a failure will alert you to something you need to fix.
i've found this article and its quite instructive about my question: https://testing.googleblog.com/2014/02/minimizing-unreproducible-bugs.html