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

JUnit, Mock-object

11.11.2012, 18:53. Показов 2216. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru