В моем классе Java у меня есть метод, который создает объект и реализует определенную логику для назначения случайных значений некоторым из его переменных, используя один статический экземпляр Random (static Random rn = new Random();
). Одна из этих переменных - objectId
.Как проверить, что созданное значение уникально?
Как я могу написать Спки теста блока, чтобы убедиться, что objectId
значение уникальными среди всех созданных объектов?
Если мне нужно было это только для два последовательных объектов я бы написать что-то вроде этого (опуская импорта):
class MyTest extends Specification {
def @Shared obj = new MyObject()
def "consecutive IDs are not equal"() {
given:
def id1 = ar.randomObject(MyObject.rn).getId()
def id2 = ar.randomObject(MyObject.rn).getId()
expect:
id1 != id2
}
}
Как продлить эту логику с переменным числом экземпляров?
Вы не можете проверить это всегда уникально. использование Random для генерации идентификаторов - не очень хорошая идея. –
Действительно, гарантировано, что она не всегда уникальна для достаточно большого набора идентификаторов. –
@tim_yates Вы правы. На самом деле это была цель теста. Я в порядке с 10 000 идентификаторами и гарантированно потерпел неудачу с 100 000. –