Для эталона мне нужны три разных настройки («держать все», «держать размер» и «ничего не держать»), поэтому я мог использовать перечисление. Затем я увидел, что мне нужно несколько раз запускать несколько случаев (в тесте используется случайный выборка), а исходное перечисление получилось довольно негибким. Для Caliper, мне нужно повторить элементы перечисления. После некоторых попыток не удалось сделать это правильно, я закончил с этой Hacky идея:Можно ли улучшить это хакерское перечисление?
private enum Randomization {
USE_EXAMPLE_1,
USE_EXAMPLE_2,
KEEP_EXAMPLE_SIZE_1,
RANDOM_1,
RANDOM_2,
RANDOM_3,
;
final boolean keepAll;
final boolean keepSize;
private Randomization() {
keepAll = name().startsWith("U");
keepSize = !name().startsWith("R");
}
}
Это именно то, что я хочу, я могу добавить или удалить эксперименты с минимальными затратами. Есть ли более приятное решение?
* заполнить коллекцию * - Как правило, да, но как я могу заставить Caliper работать с ним? Я могу написать «рандомизацию рандомизации @Param», и он пробует все значения. Это также работает для 'boolean', но для чего-то еще вам нужно перечислить (как строковые аргументы для аннотации) значения, которые будут использоваться. – maaartinus
@maaartinus: Я не использовал Caliper, но я был бы очень удивлен, если бы это был действительно лучший способ сделать это. –
Было бы плохой идеей, если бы мне было нужно сказать пять или более повторений. Но я только хотел попробовать несколько семян для рандомизированных экспериментов и одно испытание для детерминированных. – maaartinus