TGViewer
Java Portal | Программирование Java Portal | Программирование @java_iibrary · 11.6K subscribers
Post #1407 2.72K
Ты создаёшь Java-класс для генерации 128-битных токенов, поэтому пишешь следующий тест:

Random random = new SecureRandom();
Tokens tokens = new Tokens(random);
Token result = tokens.next();
assertEquals(result.high(), ???);
assertEquals(result.low(), ???);


Что мы должны написать в проверках (assert)? Мы могли бы использовать обычный экземпляр Random с заданным сидом.
Другой вариант — заменить тип Random на интерфейс RandomGenerator:

RandomGenerator generator = fixedGenerator(1L, 2L);
Tokens tokens = new Tokens(generator);
Token result = tokens.next();
assertEquals(result.high(), 1L);
assertEquals(result.low(), 2L);


Где fixedGenerator выглядит следующим образом:

private RandomGenerator fixedGenerator(long... longs) {
return new RandomGenerator() {
private final long[] values = longs.clone();
private int index;

@Override
public final long nextLong() {
int currentIndex = index++;
if (index == values.length) {
index = 0;
}
return values[currentIndex];
}
};
}


Интерфейс java.util.random.RandomGenerator был добавлен в JDK 17 и реализуется классом java.util.Random

🔥— всё верно
👍— если пост оказался полезным

👉 Java Portal
  • 👍 14
  • 🤔 4
  • 🔥 1
More from @java_iibrary
  1. Oct 2, 2026🚀 Spring Boot 4: переименовано свойство преобразования исключений ✅ Было: spring.dao.exce…
  2. Oct 2, 2026Процесс ≠ Поток ≠ Виртуальный поток. Эти понятия часто путают, хотя они решают разные зада…
  3. Oct 1, 2026Когда Java-стектрейс оказался длиннее контекста ИИ 👀 👉 Java Portal
  4. Oct 1, 2026Spring Boot 4: приближение срока истечения SSL-сертификатов больше не меняет статус health…
  5. Sep 30, 2026Почему один и тот же Java-файл .class запускается на Windows, Linux и macOS без перекомпил…
  6. Sep 30, 2026Docker прост, пока всё работает. Но что делать, если контейнер постоянно перезапускается,…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →