Why not just create an abstract test case, that
throughly tests your base class. Then concrete
implementations of Task, would have similiar concrete
test cases. You end up with a parallel inheritance
hierarchy - but it works well for us. We've been doing
it on our project for over a year.