Мне нужно иметь дело с устаревшим приложением, которое не имеет тестов. Поэтому, прежде чем начинать рефакторинг, я хочу убедиться, что все работает так, как есть.AnyString() как параметр для модульного теста
Теперь представьте себе следующую ситуацию:
public SomeObject doSomething(final OtherObject x, final String something) {
if(x == null) throw new RuntimeException("x may not be null!");
...
}
Теперь я хочу, чтобы проверить, что проверка нулевой, поэтому убедитесь, что он работает, и я не потерять его, как только я рефакторинг.
Так что я сделал это
@Test(expected = RuntimeException.class)
public void ifOtherObjectIsNullExpectRuntimeException() {
myTestObject.doSomething(null, "testString");
}
Теперь это работает конечно.
Но вместо «testString» я хотел бы передать случайную строку.
Так что я попытался с:
Но это не допускается, так как я получаю
org.mockito.exceptions.misusing.InvalidUseOfMatchersException:. ... Вы не можете использовать аргумент matchers вне проверки или stubbing
Я понимаю смысл этого, но мне интересно, могу ли я все же сделать то, что хочу, без параметризации моего теста или тому подобного. Единственными библиотеками, которые я могу использовать, являются Junit, AssertJ, Mockito и Powermock.
Любые идеи?
Это работает для строк, но, например, Длинны или другие предметы? – Sorona
Кроме того, randomUUID() никогда не будет возвращать нулевой афайк, так что это главный недостаток. – Sorona
@Sorona См. [Java.util.Random] (https://docs.oracle.com/javase/7/docs/api/java/util/Random.html). Все, что вам нужно для тестирования со случайными значениями, можно найти там. Кроме того, если вы хотите специально протестировать нулевое значение, это должен быть отдельный модульный тест. Модульные тесты должны быть дешевыми и быстрыми; не бойтесь добавить новый тестовый пример, где вы считаете это необходимым! – nasukkin