Вы можете сохранить dataprovider в отдельном классе, а затем аннотировать ваши тесты с помощью dataprovider. Вы можете указать его с помощью dataProviderClass
Цитата из testng doc здесь :
По умолчанию поставщик данных будет искать в текущем тесте класса или одного из его базовых классов. Если вы хотите поместить поставщика данных в другой класс, это должен быть статический метод, и вы указываете класс, где он может быть найден в атрибуте dataProviderClass:
blockquote>public class StaticProvider { @DataProvider(name = "create") public static Object[][] createData() { return new Object[][] { new Object[] { new Integer(42) } } } } public class MyTest { @Test(dataProvider = "create", dataProviderClass = StaticProvider.class) public void test(Integer n) { // ... } }
К сожалению, способ, которым инициализация контейнера работает в Spring, боб, может только быть введен в другом бобе, после того как это полностью инициализируется. В Вашем случае у Вас есть круговая зависимость, которая предотвращает любой боб, который будет инициализирован, потому что они зависят друг от друга. Для обхождения этого, можно реализовать BeanFactoryAware в одном из бобов и получить ссылку на другой боб с помощью beanFactory.getBean ("beanName").
neesh является правильным, Spring не делает этого из поля.
Взаимозависимые бобы намекают на проблему проектирования. "Чистый" способ сделать это должно перепроектировать Ваши сервисы таким способом, которым нет таких нечетных зависимостей, конечно при условии, что Вы управляете реализациями.
Можно реализовать BeanPostProcessor, который устанавливает зависимость.
Или...
Посмотрите ответ Costin здесь:
http://forum.springframework.org/showthread.php?t=19569&highlight=circular+dependencies
Видит ответ Andreas здесь:
http://forum.springframework.org/showthread.php?t=29572&highlight=circular+dependencies
можно расширить ApplicactionContext, которые используют и переопределяют метод createBeanFactory ()
protected DefaultListableBeanFactory createBeanFactory(){
DefaultListableBeanFactory beanFactory = super.createBeanFactory();
// By default this is false;
beanFactory.setAllowRawInjectionDespiteWrapping( true );
return beanFactory;
}
, Это работает, но быть осторожным, потому что это позволяет циклические ссылки.