Сейчас как-то так:
class MyVeryImportantTest {
@Test
void feature_should_work_somehow(){ /*snip*/ }
@Test
void feature_should_work_somehow2(){ /*snip*/ }
@Test
void feature_should_work_somehow3(){ /*snip*/ }
}
passwordService {
shouldHash {
length { /* snip */ }
salt { /* snip */ }
}
shouldCheck {
validPasswords()
invalidPasswords()
}
}
TestNG
@DataProvider(name = "test1")
public static Object[][] primeNumbers() {
return new Object[][] { {2, true}, {6, false},
{19, true}, {22, false}, {23, true}};
}
@Test(dataProvider = "test1")
void testPrimeNumberChecker(Integer inputNumber,
Boolean expectedResult){ /* snip */}
JUnit 5
static Stream<Arguments> stringIntAndListProvider() {
return Stream.of(
arguments("apple", 1, Arrays.asList("a", "b")),
arguments("lemon", 2, Arrays.asList("x", "y"))
);
}
@ParameterizedTest
@MethodSource("stringIntAndListProvider")
void testWithMultiArgMethodSource(String str,
int num, List<String> list) {/* snip */}
Надо хранить пароли. Но как?
Быстро!
200 GH/s @ 8x Nvidia GTX 1080 Founders Edition with Hashcat
Хэш начинается с магического $2a$10
$2a
— версия bcrypt
$10
— количество раундов «соления»
Они очень медленные (100/1000 в секунду)
kotest решает для нас проблемы
asm0di0 @ Twitter
asm0dey @ Telegram
it.asm0dey.ru