Я только недавно начал изучать JUnit и столкнулся со следующей проблемой.
Посмотрите на следующий класс
class MyClass {
String a;
public MyClass(String a) {
this.a=a;
String doSomething(String a) {
if( a.isEmpty() )
return "isEmpty";
else
return"isNotEmpty";
}
Я хочу протестировать описанный выше метод для обоих условия. Если я перейду к общей структуре написания тестовых случаев, это будет выглядеть примерно так:
class MyClassTest {
MyClass myClass;
@BeforeEach
void setUp() {
myClass=new MyClass("sampleString");
}
@Test
void doSomethingTest() {
Assertions.equal("isNotEmpty", myClass.doSomething());
}
}
Однако для тестирования условия пустой строки мне понадобится другой метод установки, где вместо "sampleString"
я передаю пустой string.
Ниже приведены подходы, которые я могу придумать, и вопросы для каждого из них:
- Не использовать setUp вообще, а вместо этого инициализировать класс в отдельном методе тестирования. Однако, если скажем, есть 10 тестовых случаев; 5 из которых требуют пустой строки и отдыха
"sampleString"
, тогда это не имеет смысла. Опять же, мы можем иметь отдельный метод для этого повторяющегося кода и вызывать его индивидуально в каждом тестовом примере, но тогда это противоречит цели использования метода повышения. Допустим, я хотел использовать два разных метода настройки, есть ли способ сделать это? - Есть параметризованная настройка. Я не знаю, возможно ли это, хотя. Если да, пожалуйста, поделитесь некоторыми полезными ссылками для этого.
- Используйте TestFactory. Я попытался прочитать об этом, но не смог найти пример для этого конкретного случая c. Если у вас есть, пожалуйста, поделитесь.
Этот пример был прост для иллюстративных целей.