Допустим, у меня есть менеджер, который выглядит примерно так:
public class CustomerManager {
@Autowired
@Qualifier("customerDAO")
private CustomerDAO customerDAO;
public List<Customer> findCustomers() {
List<Customer> customers = customerDAO.findCustomers();
if (customers.size() == 0) {
// Do something else...
}
if (customers.size() == 1) {
// Do something else...
}
return customers;
}
}
Теперь пример того, как настроен мой тест:
public class CustomerManagerUnitTest extends AbstractDependencyInjectionSpringContextTests {
protected String[] getConfigLocations() {
return new String[] { "classpath:test-spring-customer.xml" };
}
public void testFindCustomers_NoResults() {
CustomerManager customerManager = new CustomerManager();
List<Customer> customers = customerManager.findCustomers();
// Test...
}
public void testFindCustomers_OneResult() {
CustomerManager customerManager = new CustomerManager();
List<Customer> customers = customerManager.findCustomers();
// Test...
}
public void testFindCustomers_MultipleResults() {
CustomerManager customerManager = new CustomerManager();
List<Customer> customers = customerManager.findCustomers();
// Test...
}
}
В зависимости от количества клиентов (или типа данных клиентов) мне нужно сделать что-то конкретное. Я использую Spring's AbstractDependencyInjectionSpringContextTests для того, чтобы использовать тестовые контексты. Таким образом, получение фиктивного DAO из конфигурации тестового контекста, и автоматическое подключение это не проблема. Однако это означает, что для каждого теста, в котором требуется тестирование другого набора результатов, мне понадобится другая контекстная конфигурация и разные фиктивные DAO. Прямо сейчас вы можете видеть, что у меня только один тестовый конфиг для моего фиктивного DAO. Каков наилучший способ справиться с этим?