Unit Testing Concurrency

Jonathan House passed along a link to Testing Race Conditions in Java, a post from google’s open source blog. It describes ThreadWeaver, a tool for unit testing concurrency in java.

This reminded me of a recent article in MSDN magazine Code Coverage for Concurrency. It describes SyncCover a tool for measuring code coverage in unit tests involving concurrency.

Java and C# both provide language level primitives for synchronization. This makes it difficult to write unit tests that force the code down different paths relating to concurrency and synchronization. The nature of the language level primitives doesn’t lend itself well to faking them out by encapsulation through interfaces or virtual methods.

C++ takes a library approach to concurrency and synchronization. While I haven’t tried this yet myself, I have a feeling that the library approach would make it easier to control the playout of various synchronization and concurrency scenarios when writing unit tests.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: