Форум программистов, компьютерный форум, киберфорум
Java EE (J2EE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
0 / 0 / 0
Регистрация: 21.03.2015
Сообщений: 84

Тестирование контролера в mvc

13.02.2016, 22:47. Показов 742. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Имеется контроллер в mvc приложении ProductsController. Как к нему написать junit test?

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
package com.nhl.web;
import java.util.ArrayList;
import com.nhl.entity.Product;
import com.nhl.dto.CreateProductDTO;
import com.nhl.dto.UpdateProductDTO;
import com.nhl.entity.User;
import com.nhl.service.ProductService;
import com.nhl.service.SaleService;
import com.nhl.service.UserService;
import com.nhl.service.UserServiceImpl;
import javax.mail.internet.AddressException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import javax.validation.Valid;
 
import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.servlet.ModelAndView;
 
@Controller
public class ProductsController {
    private static final Logger log = Logger.getLogger(ProductsController.class);
 
    @Autowired
    private ProductService productService;
 
    @Autowired
    private UserService userService;
    
    @RequestMapping(value = "/products.html", method = RequestMethod.GET)
    public String showProducts( Model model,HttpSession session,
            HttpServletRequest request)  {
                
        final String userName = request.getUserPrincipal().getName();
    
        session.setAttribute("eMail",userName+"@mail.ru");
        session.setAttribute("name", userName);
             model.addAttribute("eMail", session.getAttribute("eMail") );
        
                User user = (User) userService.findUserByName(userName);
    
            session.setAttribute("role", user.getRole());       
             
            model.addAttribute("ProductsList", productService.getAllProducts());
            
             model.addAttribute("NumberOfProducts", productService.getAllProducts().size());
            
            return "products";
         
    }   
    
    @RequestMapping(value = "/products.html", method = RequestMethod.POST)
    public String showProducts2( Model model,HttpSession session,
            HttpServletRequest request)  {
                
        final String userName = request.getUserPrincipal().getName();
        ArrayList<Product> list = null;
        Integer start=0;  Integer end=1000000;
        
        session.setAttribute("eMail",userName+"@mail.ru");
        session.setAttribute("name", userName);
        
        model.addAttribute("eMail", session.getAttribute("eMail") );
                     
        User user = (User) userService.findUserByName(userName);
                    
        session.setAttribute("role", user.getRole());       
                     
         if  (request.getParameter("start")!=null && request.getParameter("start").equals("without")!=true) {
                    
                    start =  Integer.parseInt(request.getParameter("start")); 
                                    
                }
                
               if  (request.getParameter("end")!=null && request.getParameter("end").equals("without")!=true) {
                    
                   end =  Integer.parseInt(request.getParameter("end")); 
                                    
                }
                      
                 list = (ArrayList<Product>) productService.getAllProducts(start,end);
                 model.addAttribute("ProductsList", list);
             
            if  (request.getParameter("sorting").equals("without")!=true && request.getParameter("sorting").equals("name")) {
            
                list = productService.sortList("name", list);
                model.addAttribute("ProductsList", list);
                
            }
            if  (request.getParameter("sorting").equals("without")!=true && request.getParameter("sorting").equals("category")) {
                
                list = productService.sortList("category", list);
                model.addAttribute("ProductsList", list);
                
            }
            if  (request.getParameter("sorting").equals("without")!=true && request.getParameter("sorting").equals("price")) {
                
                list = productService.sortList("price", list);
                model.addAttribute("ProductsList", list);
                
            }
            
            return "products";
         
    }
 
}
test-context.xml

XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
<?xml version="1.0" encoding="UTF-8"?>
<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"
    xmlns:jdbc="http://www.springframework.org/schema/jdbc"
    xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
    xsi:schemaLocation="http://www.springframework.org/schema/mvc [url]http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd[/url]
        [url]http://www.springframework.org/schema/beans[/url] [url]http://www.springframework.org/schema/beans/spring-beans.xsd[/url]
        [url]http://www.springframework.org/schema/context[/url] [url]http://www.springframework.org/schema/context/spring-context-3.2.xsd[/url]
        [url]http://www.springframework.org/schema/aop[/url]  [url]http://www.springframework.org/schema/aop/spring-aop-3.2.xsd[/url]
        [url]http://www.springframework.org/schema/tx[/url]  [url]http://www.springframework.org/schema/tx/spring-tx-3.2.xsd[/url]
        [url]http://www.springframework.org/schema/jdbc[/url]
    http://www.springframework.org/schema/jdbc/spring-jdbc-3.0.xsd">
 
    <context:component-scan base-package="com.nhl.dao" />
    <context:component-scan base-package="com.nhl.dto" />
    <context:component-scan base-package="com.nhl.entity" />
    <context:component-scan base-package="com.nhl.service" />
 
    <tx:annotation-driven transaction-manager="transactionManager" />
 
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
        destroy-method="close" p:driverClassName="com.mysql.jdbc.Driver"
        p:url="jdbc:mysql://localhost:3306/baza"
        p:username="root" p:password="" />
 
<!-- <jdbc:initialize-database data-source="dataSource"> -->
<!--        <jdbc:script location="classpath*:/script/mysql.sql" /> -->
<!--    </jdbc:initialize-database> -->
 
<bean id="sessionFactory"
        class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
        <property name="dataSource" ref="dataSource" />
        <property name="hibernateProperties">
            <props>
                <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
                <prop key="hibernate.show_sql">false</prop>
                <prop key="hibernate.format_sql">true</prop>
<prop key="hibernate.hbm2ddl.auto">update</prop>
                <prop key="cache.provider_class">org.hibernate.cache.internal.NoCacheProvider</prop>
<prop key="hibernate.default_schema">baza</prop>
            </props>
        </property>
 
        <property name="annotatedClasses">
            <list>
                <value>com.nhl.entity.User</value> 
                <value>com.nhl.entity.Product</value> 
                <value>com.nhl.entity.Article</value> 
                <value>com.nhl.entity.Category</value> 
                <value>com.nhl.entity.Producer</value> 
            </list>
        </property>
    </bean>
 
 
    <bean id="transactionManager"
        class="org.springframework.orm.hibernate4.HibernateTransactionManager">
        <property name="sessionFactory" ref="sessionFactory" />
    </bean>
    <mvc:annotation-driven />
<mvc:resources mapping="/resources/**" location="/resources/" />
 
</beans>

сам тест

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
import static org.junit.Assert.*; 
import org.junit.Test; 
import org.junit.runner.RunWith;
import com.nhl.web.ProductsController;
import org.springframework.test.annotation.Rollback;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.ui.Model;
 
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
 
@ContextConfiguration(locations = { "classpath:test-context.xml" })
@RunWith(SpringJUnit4ClassRunner.class)
public class ProductsControllerTest { 
    
    @Transactional(readOnly = false)
    @Rollback(false)
    @Test 
    public void testHandleRequestView() throws Exception { 
        ProductsController controller = new ProductsController(); 
        
       String  view = controller.showProducts(null,null, null);
        assertEquals("products", view); 
    } 
}


непонятно как получить model,session,request чтобы использовать в методе теста ?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
13.02.2016, 22:47
Ответы с готовыми решениями:

Unit -тестирование или автоматизированное тестирование
Доброго времени суток. Я программирую «для себя» второй год, на выходе получаются разного рода приложения от постоянно подающих с...

Удаленное тестирование приложение/Пересылка на тестирование
Если кто-то написал приложение под андроид и захочет показать другому человеку, то достаточно отослать apk. А как обстоит с этим дело в...

Два контролера
Эсть два контролера. Правильно ли я описал их? И куда записывать конфиг что б они не сорились? @Controller public class...

1
Эксперт Java
 Аватар для turbanoff
4094 / 3828 / 745
Регистрация: 18.05.2010
Сообщений: 9,331
Записей в блоге: 12
15.02.2016, 12:03
Обычно используют моки для этого.
Посмотрите на библиотеку - Mockito
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
15.02.2016, 12:03
Помогаю со студенческими работами здесь

Выбор контролера
Задумал сделать устройство для управления светодиодным освещением - плавное включение/ выключение, датчики освещенности, движения, звука с...

Два контролера проверяют детали
Два контролера проверяют детали.Вероятность того,что деталь попадет к 1 контролеру =0,6 ко 2 контролеру=0,4 известно,что 1 контролер...

[VHDL] Работа с описанием CAN контролера
Всем привет ! Пишу дипломной проект, тема CAN контролер. Суть такова, берем Xilinx CoreKimerator, создаем IP core контролера, и...

GetJSON не подтягивает данные с контролера
Добрый день. Пишу в ASp.NET MVC 5 Хочу сделать простейший пример данные с контролера передать в javascript В контролере public...

Как широко применяется MVC в программировании на Java? Стоит ли изучать MVC?
Здравствуйте. Начинающий java-программист. Буквально недавно только закончил изучать Core. Теперь готовлюсь к собеседованиям и своей первой...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при создании или изменении элементов справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной записи электронной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru