Я хочу написать тест Junit для DAO. Проект работает сам. Все классы и методы работают. Все данные из теста правильно. Почему это плохо?Тесты Junit на Java (Spring, MVC) для DAO и службы
Исключение --- Не удалось автополе поле: private com.epam.edu.jtc.dao.CoursesDAOImpl com.epam.edu.jtc.test.CourseTest.coursesDao; Вложенное исключение - org.springframework.beans.factory.NoSuchBeanDefinitionException: не существует определяющего компонента типа [com.epam.edu.jtc.dao.CoursesDAOImpl], найденного для зависимости: ожидается как минимум 1 компонент, который квалифицируется как кандидат autwire для этой зависимости. Зависимость от аннотаций: {@ org.springframework.beans.factory.annotation.Autowired (обязательно = истина)}
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations={"classpath:test-context.xml" })
public class CourseTest
{
@Autowired
private CoursesDAOImpl coursesDao;
@Test
public void testFindCourseById()
{
Course course = coursesDao.findCourseById(322);
Assert.assertEquals("Python", course.getName());
Assert.assertEquals("Development Manager", course.getCategory());
Assert.assertEquals("python.com", course.getLinks());
return;
}
}
тест-context.xml
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
xmlns:security="http://www.springframework.org/schema/security"
xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd">
<!-- the test application context definition for the jdbc based tests -->
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close"
p:driverClassName="org.h2.Driver"
p:url="jdbc:h2:tcp://localhost:9092/~/QWE;INIT=create schema if not exists QWE\;"
p:username="sa"
p:password=""
/>
CoursesDAO.java
public interface CoursesDAO {
public Course findCourseById(Integer key);
}
КурсыDAOImpl.java
@Repository
public class CoursesDAOImpl implements CoursesDAO {
@Autowired
private SessionFactory sessionFactory;
public Course findCourseById(Integer id) {
Session session = sessionFactory.getCurrentSession();
session.beginTransaction();
Course course = (Course) session.get(Course.class, id);
session.getTransaction().commit();
return course;
}
Похоже, что ваш контекст для тестирования не позволяет автоматически сканировать компоненты. –
<контекст: компонент-сканирование base-package = "com.mypackage" /> –
добавлено и .. все-таки есть такое исключение –
Dmitry88