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

JUnit, Mock-object

11.11.2012, 18:53. Показов 2240. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Я только начал разбираться с JUnit тестами, и мне нужна помощь в разработке теста.
Есть элементарный класс конвертор, который переопределяет два метода getAsString() и getAsObject():


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
 public Object getAsObject(FacesContext facesContext, UIComponent uiComponent, String s) {
 String status = null;
 boolean b = Boolean.valueOf(s);
 if (b) {
 status = "Исправлено";
 } else {
 status = "Актуально";
 }
 return status;
 }
 
 
 public String getAsString(FacesContext facesContext, UIComponent uiComponent, Object o) {
 String status = null;
 if (o instanceof Boolean) {
 boolean b = (Boolean) o;
 if (b) {
 status = "Исправлено";
 } else {
 status = "Актуально";
 }
 }
 return status;
 }

необходимо создать Unit-тест для этих методов.
вот вариант моей реальзации теста, подскажите, что я делаю не так, вполне возможно, что ошибка с созданием mock-объектов, но я хз


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
@RunWith(Parameterized.class)
 public class TestBooleanToStatus {
 
 @Parameterized.Parameters
 public static Collection data() {
 return Arrays.asList(new Object[][]{
 {"Исправлено"}
 });
 }
 
 String s;
 
 public TestBooleanToStatus(int sum, String s) {
 this.s = s;
 }
 
 public static void main(String[] args) {
 JUnitCore core = new JUnitCore();
 core.addListener(new RunList());
 core.run(TestBooleanToStatus.class);
 }
 
 
 
 @Test
 public void getAsString() {
 
 FacesContext facesContext = EasyMock.createMock(FacesContext.class);
 UIComponent uiComponent = UIComponent.getCurrentComponent(facesContext);
 
 BooleanToStatus bol = new BooleanToStatus();
 Object value = bol.getAsObject(facesContext, uiComponent, "true");
 assertEquals(bol.getAsString(facesContext, uiComponent, value), s);
 }
 }
 
 class RunList extends RunListener {
 @Override
 public void testStarted(Description desc) {
 System.out.println("Started:" + desc.getDisplayName());
 }
 
 @Override
 public void testFinished(Description desc) {
 System.out.println("Finished:" + desc.getDisplayName() + "\n");
 }
 
 @Override
 public void testFailure(Failure fail) {
 System.out.println("Failed:" +
 fail.getDescription().getDisplayName() +
 " [" + fail.getMessage() + "]");
 }
 }
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
11.11.2012, 18:53
Ответы с готовыми решениями:

Заглушка-mock для FileOutputStream
Здравствуйте. Помогите, пожалуйста, с проблемой. Есть метод, который надо протестировать с помощью mockito: public void myMethod() {...

Spring4 controller testing mock service
Здравствуйте! Пишу интеграционные тести для контроллеров(БД - hsql). Тестирую через контекст: ...

тест Mock Exam Engine java - ответы
У кого-нибудь есть ответы по этому тесту? Или может быть учебники "быстрый старт", чтобы большинство вопросов быстро понять и пройти...

4
 Аватар для mutagen
2587 / 2260 / 257
Регистрация: 14.09.2011
Сообщений: 5,185
Записей в блоге: 18
12.11.2012, 16:59
у Вас ни в одном тестируемом методе не используется FacesContext.class и UIComponent, нафига их мокать? передавайте туда null
всё равно они не проверяются на присутствие
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
package utest;
 
import static org.junit.Assert.assertEquals;
 
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
 
public class TestBooleanToStatus {
    private BooleanToStatus bol;
 
    @Before
    public void init() {
        bol = new BooleanToStatus();
    }
 
    @After
    public void tearDown() {
        bol = null;
    }
 
    @Test
    public void getAsStringTest() {
        assertEquals(bol.getAsString(null, null, Boolean.TRUE), "Исправлено");
        assertEquals(bol.getAsString(null, null, Boolean.FALSE), "Актуально");
    }
 
    @Test(expected = ClassCastException.class)
    public void getAsStringExTest() {
        bol.getAsString(null, null, new Object());
    }
 
    @Test
    public void getAsObjectTest() {
        assertEquals(bol.getAsObject(null, null, "true"), "Исправлено");
        assertEquals(bol.getAsObject(null, null, "false"), "Актуально");
        assertEquals(bol.getAsObject(null, null, "ASS;llkfas"), "Актуально");
    }
 
 
}
 
class BooleanToStatus {
 
    public Object getAsObject(FacesContext facesContext,
            UIComponent uiComponent, String s) {
        return Boolean.valueOf(s) ? (Object) "Исправлено"
                : (Object) "Актуально";
    }
 
    public String getAsString(FacesContext facesContext,
            UIComponent uiComponent, Object o) {
        return Boolean.valueOf((Boolean) o) ? "Исправлено" : "Актуально";
    }
 
    interface UIComponent {
 
    }
 
    interface FacesContext {
    }
}
1
0 / 0 / 0
Регистрация: 11.11.2012
Сообщений: 44
12.11.2012, 20:51  [ТС]
м, верная мысль, но ведь у нас класс BooleanToStatus реализует интерфейс javax.faces.convert, т.е.

Java
1
2
3
4
@FacesConverter("BooleanToStatus")
public class BooleanToStatus implements Converter {
//переопределение методов getAsString() и getAsObject()
}
он будет ругаться на определения в нем интерфейсов UIComponent и FacesContext...
они нам необходимы?
0
 Аватар для mutagen
2587 / 2260 / 257
Регистрация: 14.09.2011
Сообщений: 5,185
Записей в блоге: 18
12.11.2012, 20:56
не будет

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
package utest;
 
import static org.junit.Assert.assertEquals;
 
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.convert.Converter;
 
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
 
public class TestBooleanToStatus {
    private BooleanToStatus bol;
 
    @Before
    public void init() {
        bol = new BooleanToStatus();
    }
 
    @After
    public void tearDown() {
        bol = null;
    }
 
    @Test
    public void getAsStringTest() {
        assertEquals(bol.getAsString(null, null, Boolean.TRUE), "Исправлено");
        assertEquals(bol.getAsString(null, null, Boolean.FALSE), "Актуально");
    }
 
    @Test(expected = ClassCastException.class)
    public void getAsStringExTest() {
        bol.getAsString(null, null, new Object());
    }
 
    @Test
    public void getAsObjectTest() {
        assertEquals(bol.getAsObject(null, null, "true"), "Исправлено");
        assertEquals(bol.getAsObject(null, null, "false"), "Актуально");
        assertEquals(bol.getAsObject(null, null, "ASS;llkfas"), "Актуально");
    }
 
}
 
class BooleanToStatus implements Converter {
    @Override
    public Object getAsObject(FacesContext facesContext,
            UIComponent uiComponent, String s) {
        return Boolean.valueOf(s) ? (Object) "Исправлено"
                : (Object) "Актуально";
    }
 
    @Override
    public String getAsString(FacesContext facesContext,
            UIComponent uiComponent, Object o) {
        return Boolean.valueOf((Boolean) o) ? "Исправлено" : "Актуально";
    }
 
}
Вы только не воспринимайте мой код буквально, адаптируйте под свои нужды при необходимости
1
0 / 0 / 0
Регистрация: 11.11.2012
Сообщений: 44
12.11.2012, 21:22  [ТС]
Ок, спасибо
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
12.11.2012, 21:22
Помогаю со студенческими работами здесь

Получение имени объекта. Функция public String getName(Object object) {...}
К примеру есть объекты: Object myObject111 = new Object(); File parentDirectory = new File(); Хочу такую функцию: public String...

JUnit
Помогите протестировать исключения public static String readLines(String file) { StringBuilder res = new StringBuilder(); ...

JUnit тесты
Мне нужно сделать тесты к проекту, собранному в Maven. Не понимаю, как создать тест. У меня в программе реализуется модуль .jar, который...

Junit 4 и другое
1. Что для начала надо почитать для создания тестов? 2. Если метод только принимает значение но ничего не возвращает как его тестировать?...

Junit+spring
Здравствуйте. Подскажите пожалуйста. Пытаюсь протестировать метод. Кидает такую ошибку. java.lang.IllegalStateException: Failed to load...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если. . .
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru