hi Neil, something I suspect a few people may find relevant - I certainly would:
When I was developing a library of assorted functions, SVUnit was just fantastic. Each function could be given a straightforward set of tests, and the whole thing ran in a few seconds whenever I made any edit. There was massive added value in terms of saved debug time because errors got caught early, and missing features or operations were highlighted from the start. In fact, the ONLY known bugs in that library that escaped were things that, with hindsight, I really should have found in the unit tests anyway - but of course tests are never as complete as you'd like to think.
On the other hand, it's much less obvious to me how you should apply unit testing to complicated interacting sets of classes that have lots of state that evolves as the classes are stimulated by various method calls. Yes, I know that probably means the classes have too much state - but c'mon, we live in the real world, stuff is often less simple than you'd like it to be. So, how would you best apply SVUnit to the development of, let's say, a typical UVC? Some classes, some pieces, can easily be tested stand-alone. Others require lots of activity from the external world to get them into a state where some specific interesting thing is happening. In that case, the "unit test" starts to look much more like a complete test environment, and there's a sense that some of the immediacy benefits of unit testing are not so accessible. What do you and other experts do to get real value out of unit testing in such a situation? Or, to put it another way, what am I missing here?
thanks
Jonathan