4 ms·
> Also every single of the author’s exemple is caught by an actually good testing tool like QuickCheck. I'd be interested to see what a sufficiently strong Qui
by tom_mellior 6y ago
> Also every single of the author’s exemple is caught by an actually good testing tool like QuickCheck.
I'd be interested to see what a sufficiently strong QuickCheck specification of this problem would look like. I've used it a bit in the past, but not enough that I could reliably get it to produce all the interesting failure modes and know the expected result for each case.
- twanvl 6y ago> I'd be interested to see what a sufficiently strong QuickCheck specification of this problem would look like. I would write something like this in haskell: spec :: [Integer] -> Property spec xs = length xs <= 2 ==> fun (intercalate "," (map show xs)) == sum xs This captures the three requirements, but not the implicit fourth requirement that the function throws an exception for other inputs.
- masklinn 6y ago> not the implicit fourth requirement that the function throws an exception for other inputs. You could probably generate invalid inputs by taking a list of strings as input. Though of course at that point the property test has to reimplement half the function. That's an issue I often end up having with property tests: the oracle for interesting properties is as complex as the SUT, so you end up with two of them.
- tom_mellior 6y agoNor does this exercise the trimming of the substrings, for example. This is good for testing the happiest path, I agree. I was interested in the tedious testing of all the unhappy paths.