I've seen this before, and I'm not sure it's a bug. A testless, non-abstract subclass of a TestCase is useless unless it inherits test methods. But if it defines its own test methods, then it isn't clear if it was made a subclass to inherit test methods, or if it was made a subclass to inherit non-test helper methods, or both. I think to be safe it assumes the second. Implement #shouldInheritSelectors in the superclass to get your intended behavior.
Sent: Saturday, June 03, 2017 at 5:09 PM From: "Cyril Ferlicot D." <cyril.ferlicot@gmail.com> To: Pharo <pharo-dev@lists.pharo.org> Subject: [Pharo-dev] Abstract test classes are not managed well in SUnit
Hi,
Today I found a bug in SUnit.
Sometimes when you have an abstract test class and you override it the tests will be inherit or not.
If a subclass has other tests, the tests will not be inherited. If the subclass has no other tests, the tests will be inherited.
Here is a little script showing the problem:
TestCase subclass: #A slots: { } classVariables: { } category: 'TestProblem'.
#A asClass subclass: #B slots: { } classVariables: { } category: 'TestProblem'.
#B asClass subclass: #C slots: { } classVariables: { } category: 'TestProblem'.
#A asClass class compile: 'isAbstract ^ self = A'.
#A asClass compile: 'actualClass ^ self subclassResponsibility'.
#A asClass compile: 'testTest self actualClass new'.
#C asClass buildSuiteFromAllSelectors run. "1 run, 0 passes, 0 skipped, 0 expected failures, 0 failures, 1 errors, 0 unexpected passes"
#C asClass compile: 'testAnotherTest self assert: true'.
#C asClass buildSuiteFromAllSelectors run. "1 run, 1 passes, 0 skipped, 0 expected failures, 0 failures, 0 errors, 0 unexpected passes"
In the last line I would expect 2 run cases. 1 pass and 1 error.
I think this is important to correct because it weaken the strength of the tests.
https://pharo.fogbugz.com/f/cases/20118/SUnit-does-not-manage-well-abstract-...
-- Cyril Ferlicot https://ferlicot.fr
http://www.synectique.eu 2 rue Jacques Prévert 01, 59650 Villeneuve d'ascq France