Я проверил бы, если результат не равен нулю, а затем вызовите метод несколько раз и сравните результаты, чтобы показать, что каждый вызов возвращает другое значение.
Но помните: это не говорит о качестве случайности ваших результатов!
@Test
public void testGenerateSaltString() {
String salt1 = YourClass.generateSaltString();
String salt2 = YourClass.generateSaltString();
String salt3 = YourClass.generateSaltString();
String salt4 = YourClass.generateSaltString();
assertNotNull(salt1);
assertNotNull(salt2);
assertNotNull(salt3);
assertNotNull(salt4);
assertNotEqual(salt1, salt2);
assertNotEqual(salt1, salt3);
assertNotEqual(salt1, salt4);
assertNotEqual(salt2, salt3);
assertNotEqual(salt2, salt4);
assertNotEqual(salt3, salt4);
}
Учитывая комментарии GaborSch, я думал о нескольких нечеткой реализации теста, так как это возможно - хотя вряд ли - что два вызова функции будет генерировать ту же соль:
@Test
public void testGenerateSaltString() {
String salt1;
String salt2;
int differenceCount = 0;
for(int i = 0; i < 1000; i++) {
String salt1 = YourClass.generateSaltString();
String salt2 = YourClass.generateSaltString();
// null is still inacceptable
assertNotNull(salt1);
assertNotNull(salt2);
if(!salt1.equalsIgnoreCase(salt2)) {
differenceCount++;
}
}
// check if at least at 95% of all tries resultet in different strings
// change this value according to your needs
assertTrue(differenceCount >= 950);
}
Возможный дубликат [Тестирование методом случайного поведения] (http: // stackoverflow.com/questions/3812154/unit-testing-a-method-with-random-behavior) – guerda
@guerda Эта статья касается * того, как бороться со случайностью *. Здесь возникает вопрос: как проверить, генерируется ли произвольное случайное значение? – gaborsch