Похожие чаты

Who know JUnit 5? How can I eliminate the duplicate

code described in the question:

https://stackoverflow.com/questions/68830293/how-to-substitute-csvsourcefile-in-parent-abstracttest-to-use-different-file-so

3 ответов

19 просмотров

This is how I would organized those tests. Either one single dedicated suite for all the properties (personally I would prefer this approach): class PropertiesValuesTest { @ParameterizedTest @ArgumentsSource(PropsNumbers.class) void testProperty(Property prop, BigInt number, boolean exp) { var actual = prop.test(number); assertThat(actual).isEqualTo(exp); } static class PropsNumbers implements ArugmentsProvider { List<Argument> provide() { return List.of( // prop type, prop value, expected ??? Argument.of(new Jumping(), 100, true), Argument.of(new Jumping(), 200, false), // ..... ); } } } And if you ask if I prefer to not put test input params and expected values in a separate file - YES. Those separate files make reader to jump like a crazy across the file tree and glue it all back together to understand what are the requirements. Or another option - in case if I wanted this test case to be inherited by all specific property unit tests, then: abstract class PropertyTest<T extends Property> { protected abstract T propertyToBeTested(); protected abstract List<Pair<BigInteger, Boolean>> testValues(); @Test void testProperty() { var prop = propertyToBeTested(); testValues().forEach(number, exp -> { var actual = prop.test(number); assertThat(actual).isEqualTo(exp); }); } Even though annotations for data driven tests look sexy, those have limitations, same ones like any other java annotation. All annotation parameters must be known at compile time. There are ways to overcome this, but junit5 devs didn't used those. So you can't parameterize those annotations with something that will be defined by the subclass.

Похожие вопросы

Обсуждают сегодня

Какой-то там пердун в 90-х решил, что есть какая-то разная типизация. Кого вообще это волнует?
КТ315
49
Hi. Do we have a raid bot? Why nobody doing raids on X? Even RH mentioned this and nobody paying attention...whats the channel for hex memes? If mods cant run raids just insta...
H
31
Подскажите, а есть vault lite или ченить такое?) А то нужен вольт для похода в вольт, но весит он ~500 мб) как-то многовато для парочки запросов ))
Alexandr Orloff
17
блеать, почему так?? где в роутере это исправляется?
Арсен Маньяков 🇦🇲
16
void terminal_scroll() { memmove(terminal_buffer, terminal_buffer + VGA_WIDTH, buffer_size - VGA_WIDTH); memset(terminal_buffer + buffer_size - VGA_WIDTH, 0, VGA_WIDTH); ...
Егор
47
🌊 Ocean Nodes Dashboard Update 🚀 Hey, Oceaners! First off, a massive round of applause 👏to all of you for the amazing engagement since we launched Ocean Nodes. In just a few ...
KreigDK | Never DM first🌊
3
Всем привет! Подскажите, пожалуйста, в чем ошибка? Настраиваю подключение к MySQL. Либы лежат рядом с exe. Все как по "учебнику"
Евгений
16
А можете как-то проверить меня по знаниям по ассемблеру?
A A
132
Здравствуйте! У меня появилась возможность купить книгу "Изучай Haskell во имя добра!". Но я где-то слышал, что эта книга устарела. Насколько это правда??
E
22
люди, которые используют flameshot, к вам вопрос. Можно-ли поставить хоткей на создание скриншота? В программе есть отдел "горячие клавиши", но там все для редактирования, скр...
ThunDer104
11
Карта сайта