¿ªÔÆÌåÓý

ctrl + shift + ? for shortcuts
© 2025 Groups.io

Re: [TDD] Testing a class which utilizes randomness


 

¿ªÔÆÌåÓý

Hi Nikola,

On Apr 4, 2014, at 5:29 AM, Nikola Novak <reasonsharp@...> wrote:

I'm new to TDD and this group. For practice, I started a simple project and now I want to create a list of random strings, but such that no two strings are ever the same. In a very unlikely, yet possible case, when two randomly generated strings are the same, the method that does this should discard the duplicate and generate a new string before it returns.

What I want to test is exactly this behavior - the code which discards the duplicate and forces the string to be regenerated. To test that, I need to force the random string generator to return a duplicate at least once (but finite number of times). To create the test which would generate strings until there's at least one duplicate is unrealistic, because such a test could take a very long time to complete.

How would I write such a test?

One could:

Have a method boolean containsString(aString) and test that.
Have a method putIfAbsent(aString) and test that (by putting the same string twice and observing that I still only have one string.

Or something approximately like that.

I generally try to avoid something like boolean putString(aString) that returns whether it accepted the string or not, because I try to avoid methods that return a value and do something. I might put up with it but probably not.

There are more ways ...

Ron Jeffries
I have two cats, and a big house full of cat stuff.?
The cats fight and divide up the house, messing up their own lives.?
Nice work cats.?
Meow.

Join [email protected] to automatically receive all group messages.