Модераторы: LSD, AntonSaburov

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> IDEA & JUnit 
:(
    Опции темы
garbuz
Дата 28.7.2008, 13:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 677
Регистрация: 22.1.2008

Репутация: нет
Всего: 11



Кто сталкивался с JUnit тестами в IDEA? Как их там правильно писать, как запускать, ну и все такое...  smile 
PM MAIL   Вверх
Samotnik
Дата 28.7.2008, 15:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Super star !
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 7192
Регистрация: 4.11.2006
Где: Минск City

Репутация: 3
Всего: 191



Цитата(garbuz @  28.7.2008,  13:39 Найти цитируемый пост)
Кто сталкивался с JUnit тестами в IDEA? 

Я сталкивался много раз  smile 

Цитата(garbuz @  28.7.2008,  13:39 Найти цитируемый пост)
Как их там правильно писать, как запускать, ну и все такое...  

очень просто !  smile 

Участник:  Поконкретнее формулируйте вопрос! 
PM MAIL   Вверх
garbuz
Дата 28.7.2008, 16:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 677
Регистрация: 22.1.2008

Репутация: нет
Всего: 11



Samotnik, ну хоты идеей пользуешься!  smile  Давай рассказывай, что там к чему с тестами!
Вот например создали мы новый класс, который хотим потестить, где создавать класс, который будет запускать тесты, как его запускать, может какие-то еще тонкости есть? Пользовался ли плагином для JUnit под идею?
PM MAIL   Вверх
Samotnik
Дата 28.7.2008, 16:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Super star !
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 7192
Регистрация: 4.11.2006
Где: Минск City

Репутация: 3
Всего: 191



Цитата(garbuz @  28.7.2008,  16:17 Найти цитируемый пост)
Пользовался ли плагином для JUnit под идею? 

нет он не к чему
вообще все очень просто (как я уже и говорил)  
начицца, при создании проекта в идее есть 3 умалчиваемых пакета  Sources - тут  нужно писать код  smile  Excluded   - это куда ложаться откомпилированные классы, рисунки, проперти файлы, ... и все остальное, необходимое для запуска приложения. И собственно  Test Sources - вот то что тебе нужно
Далее... 
Создаеш в этом пакете новый класс, наследуеш его от TestCase . и пишеш код, в котором вызываются методы, и подставляются туда значения.
вот примерчик 
Это обычный  java класс, в котором есть различные методы, которые нужно протестить
Код

public class SimpleTest{
        public int summ(int a, int b) {  
                return a + b;
        }
} 

А вот сам тест 
Код

import junit.framework.*;
public class TestMath extends TestCase {

  public void testAdd() {
        int num1 = 3;
        int num2 = 2;
        int total = 5;
        int sum = 0;
        sum = Math.add(num1, num2);
        assertEquals(sum, total);
  }
} 

Т.е. суть :  у тебя есть java класс в котороч методы чтото выполняют, ты пишеш класс, который наследуеш отт тесткейса и вем в нужные тебе методы подставляеш значения. 
Если тест прошел то идея напишет  Test passed  если же  непрошел тест, то идея напишет Test Failed 
Запускать тесты в идее оч просто  сам этот файлик обычным образом компилиш (Ctrl + Shift + F9)   потом запускаеш его на выполнение (Ctrl + Shift + F10)

Добавлено через 2 минуты и 14 секунд
ах да, естественно  жарку подключить нужно  junit
PM MAIL   Вверх
garbuz
Дата 28.7.2008, 17:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 677
Регистрация: 22.1.2008

Репутация: нет
Всего: 11



Samotnik, спасибо, только я чего-то не понял...
Цитата(Samotnik @  28.7.2008,  16:51 Найти цитируемый пост)
при создании проекта в идее есть 3 умалчиваемых пакета  Sources - тут  нужно писать код  smile  Excluded   - это куда ложаться откомпилированные классы, рисунки, проперти файлы, ... и все остальное, необходимое для запуска приложения. И собственно  Test Sources - вот то что тебе нужно

Это где такое?? Знаю что по умолчанию после создания нового проекта в идее есть две папки, src и out, именно папки, а не пакеты! 
В папку src ложится код, именно оттуда пляшет идея, считая src корневым пакетом.
В папкe out есть еще две папки - production и test. В папке production - классы, в папке test - ничего нет smile 
Так что именно ты имеешь ввиду, или я тебя неправильно понял? Куда ложить тест-классы?


PM MAIL   Вверх
Samotnik
Дата 28.7.2008, 17:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Super star !
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 7192
Регистрация: 4.11.2006
Где: Минск City

Репутация: 3
Всего: 191



garbuz, когда создался проект, нажми кнопочки  Ctr + Alt + S  - Projec Settings - Modules   Справа вкладочку  Sources  Там создай папочку скажим "tests", выберии ее,  и нажми  Test Sources и IDA  поймет, что в этом пакете будут лежать классы только с тестами
 
PM MAIL   Вверх
garbuz
Дата 28.7.2008, 17:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 677
Регистрация: 22.1.2008

Репутация: нет
Всего: 11



Samotnik, все понял. Но по сути создается всего лишь новый пакет (если создавать в папке src), куда мы будем ложить наши тестовые классы. Это все я мог проделать и простым созданием нового пакета, присвоением ему имени tests, не используя при этом alt + ctrl + s, ведь при создании нового класса в этом пакете никакого импорта не происходит. В чем тогда вся фича? Или я не прав, или в этом есть что-то такое особенное? 
Да, и по поводу Run - Edit configurations. Там можно как я понял и обычное приложение добавлять, или же добавить Junit, и там какая-то JUnit консолька будет. Ты чем пользуешься?
PM MAIL   Вверх
Samotnik
Дата 28.7.2008, 18:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Super star !
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 7192
Регистрация: 4.11.2006
Где: Минск City

Репутация: 3
Всего: 191



Цитата(garbuz @  28.7.2008,  17:53 Найти цитируемый пост)
Да, и по поводу Run - Edit configurations. Там можно как я понял и обычное приложение добавлять, или же добавить Junit, и там какая-то JUnit консолька будет. Ты чем пользуешься? 

ну там тоже можно сделать

Цитата(garbuz @  28.7.2008,  17:53 Найти цитируемый пост)
Ты чем пользуешься? 

я же уже написал
указываю идее, что в этой  будут лежать тесты, подключаю жарку, пишу тесты, компилю их и запускаю, если failed -  значит провалиося, если passed - значит все по фэншую ! 
никакаих стороних тулзов не использую . все вручную ))
PM MAIL   Вверх
garbuz
Дата 28.7.2008, 19:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 677
Регистрация: 22.1.2008

Репутация: нет
Всего: 11



Samotnik, ясно. Еще раз сапсибо.
PM MAIL   Вверх
Shurr
Дата 28.7.2008, 20:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 112
Регистрация: 24.10.2006

Репутация: нет
Всего: 7



garbuz
Попробую немного упорядочить.

Тесты лежат не в отдельном пакете, а в отдельной корневой папке. Например есть папка с проектом, а в ней - src, out, test. Папка src помечается как "Sources", test - как "Test sources".
Внутри этой папки тесты разбиты по пакетам в соответствии с тестируемыми классами. Т.е. если класс Item лежит в пакете com.mybusiness.core, то его тест, класс ItemTest тоже лежит в пакете com.mybusiness.core. На файловой системе - ProjectRoot\src\com\mybusiness\core\Item.java и ProjectRoot\test\com\mybusiness\core\ItemTest.java соответственно (при условии что папка test лежит рядом с папкой src, как я описывал в предыдущем абзаце).
Вообще папка test используется как source root для всего кода, который относится к тестам: это могут быть не только непосредственно unit-тесты, но и утилиты, стабы, моки и пр. В свою очередь код, идущий в продакшн не может ссылаться на тестовый код (т.е. классы из папки src не могут зависеть от классов из папки test).

По запуску тестов посредством плагина JUnit я бы рекомендовал более короткий вариант, нежели ручное создание конфигурации (Run - Edit configurations - JUnit - Add new configuration):
1. Для запуска всех тестов пакета или класса: в дереве проекта в тестовой папке выбрать пакет или класс теста, правой кнопкой - "Run Tests in (имя пакета/класса)", или Ctrl+Shift+F10.
2. Для запуска одного или всех кейсов теста в открытом исходном файле правой кнопкой - "Run Tests in (имя пакета/класса)", или Ctrl+Shift+F10. Запустится кейс на котором был курсор, или все кейсы теста, если курсор был не на кейс-методе.

При таком запуске тестов конфигурация создается автоматически, при желании ее можно сохранить для последующего использования (Run - Save "TestBlablabla" Configuration).

Перед запуском тестов естественно необходимо сделать Make (Ctrl+F9).


По созданию тестов я бы рекомендовал плагин JUnitGenerator. При минимальном количестве настроек (возможность редактировать шаблон теста + настройка путей) достаточно прост в использовании: в исходнике класса нажимаешь Alt+Ins - JUnit Test, после чего в папке с тестами создается класс-тест со сгенерированными заглушками методов.
PM MAIL   Вверх
garbuz
Дата 28.7.2008, 20:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 677
Регистрация: 22.1.2008

Репутация: нет
Всего: 11



Shurr, мегаспасибо, буду курить!


ЗЫ. Кто-нить, плюсаните ребят за помощь smile
PM MAIL   Вверх
Samotnik
Дата 28.7.2008, 21:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Super star !
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 7192
Регистрация: 4.11.2006
Где: Минск City

Репутация: 3
Всего: 191



Shurr,  а я не тоже самое сказал ?  smile 
PM MAIL   Вверх
Shurr
Дата 29.7.2008, 09:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 112
Регистрация: 24.10.2006

Репутация: нет
Всего: 7



Samotnik
На самом деле то же самое, только немножко сумбурно  smile 
PM MAIL   Вверх
Samotnik
Дата 29.7.2008, 11:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Super star !
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 7192
Регистрация: 4.11.2006
Где: Минск City

Репутация: 3
Всего: 191



Shurr,   smile 

garbuz, если вопрос решен, поставь плиз галочку 
PM MAIL   Вверх
garbuz
Дата 15.7.2009, 01:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 677
Регистрация: 22.1.2008

Репутация: нет
Всего: 11



Вот тут решил потестировать спринговое приложение и опять встал на месте.
Создал папку tests, пометил ее как папку для тестов (то что обсуждалось выше)
Создал класс FirstTest
Код

@ContextConfiguration(locations = {"/web/WEB-INF/applicationContext.xml", "/web/WEB-INF/database-config.xml"})
@TransactionConfiguration(transactionManager = "txManager")
public class FirstTest extends AbstractTransactionalJUnit4SpringContextTests {

    @Autowired
    private StatusService statusService;

    @Test
    @Rollback(false)
    public void statusTest(){
        Status status = new Status();
        status.setStatusName("active");
        status.setAlias("ACTIVE");
        statusService.create(status);
    }



Запускаю, но вылетает ошибка. Не поднимается контекст спринга, не найти файл.
Код

02:01:06,156 ERROR main TestContextManager:prepareTestInstance:258 - Caught exception while allowing TestExecutionListener [org.springframework.test.context.support.DependencyInjectionTestExecutionListener@2808b3] to prepare test instance [FirstTest@535b58]
java.lang.IllegalStateException: Failed to load ApplicationContext
    at org.springframework.test.context.TestContext.getApplicationContext(TestContext.java:203)
    at org.springframework.test.context.support.DependencyInjectionTestExecutionListener.injectDependencies(DependencyInjectionTestExecutionListener.java:109)
    at org.springframework.test.context.support.DependencyInjectionTestExecutionListener.prepareTestInstance(DependencyInjectionTestExecutionListener.java:75)
    at org.springframework.test.context.TestContextManager.prepareTestInstance(TestContextManager.java:255)
    at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.createTest(SpringJUnit4ClassRunner.java:93)
    at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.invokeTestMethod(SpringJUnit4ClassRunner.java:130)
    at org.junit.internal.runners.JUnit4ClassRunner.runMethods(JUnit4ClassRunner.java:51)
    at org.junit.internal.runners.JUnit4ClassRunner$1.run(JUnit4ClassRunner.java:44)
    at org.junit.internal.runners.ClassRoadie.runUnprotected(ClassRoadie.java:27)
    at org.junit.internal.runners.ClassRoadie.runProtected(ClassRoadie.java:37)
    at org.junit.internal.runners.JUnit4ClassRunner.run(JUnit4ClassRunner.java:42)
    at com.intellij.rt.junit4.Junit4ClassSuite.run(Junit4ClassSuite.java:99)
    at junit.textui.TestRunner.doRun(TestRunner.java:116)
    at com.intellij.rt.execution.junit.IdeaTestRunner.doRun(IdeaTestRunner.java:94)
    at junit.textui.TestRunner.doRun(TestRunner.java:109)
    at com.intellij.rt.execution.junit.IdeaTestRunner.startRunnerWithArgs(IdeaTestRunner.java:22)
    at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:118)
    at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:40)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at com.intellij.rt.execution.application.AppMain.main(AppMain.java:90)
Caused by: org.springframework.beans.factory.BeanDefinitionStoreException: IOException parsing XML document from class path resource [web/WEB-INF/applicationContext.xml]; nested exception is java.io.FileNotFoundException: class path resource [web/WEB-INF/applicationContext.xml] cannot be opened because it does not exist
    at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:349)
    at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:310)
    at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:143)
    at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:178)
    at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:149)
    at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:212)
    at org.springframework.test.context.support.AbstractGenericContextLoader.loadContext(AbstractGenericContextLoader.java:81)
    at org.springframework.test.context.support.AbstractGenericContextLoader.loadContext(AbstractGenericContextLoader.java:42)
    at org.springframework.test.context.TestContext.loadApplicationContext(TestContext.java:173)
    at org.springframework.test.context.TestContext.getApplicationContext(TestContext.java:199)
    ... 22 more
Caused by: java.io.FileNotFoundException: class path resource [web/WEB-INF/applicationContext.xml] cannot be opened because it does not exist
    at org.springframework.core.io.ClassPathResource.getInputStream(ClassPathResource.java:142)
    at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:336)
    ... 31 more

java.lang.IllegalStateException: Failed to load ApplicationContext
    at org.springframework.test.context.TestContext.getApplicationContext(TestContext.java:203)
    at org.springframework.test.context.support.DependencyInjectionTestExecutionListener.injectDependencies(DependencyInjectionTestExecutionListener.java:109)
    at org.springframework.test.context.support.DependencyInjectionTestExecutionListener.prepareTestInstance(DependencyInjectionTestExecutionListener.java:75)
    at org.springframework.test.context.TestContextManager.prepareTestInstance(TestContextManager.java:255)
    at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.createTest(SpringJUnit4ClassRunner.java:93)
    at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.invokeTestMethod(SpringJUnit4ClassRunner.java:130)
    at org.junit.internal.runners.JUnit4ClassRunner.runMethods(JUnit4ClassRunner.java:51)
    at org.junit.internal.runners.JUnit4ClassRunner$1.run(JUnit4ClassRunner.java:44)
    at org.junit.internal.runners.ClassRoadie.runUnprotected(ClassRoadie.java:27)
    at org.junit.internal.runners.ClassRoadie.runProtected(ClassRoadie.java:37)
    at org.junit.internal.runners.JUnit4ClassRunner.run(JUnit4ClassRunner.java:42)
    at com.intellij.rt.junit4.Junit4ClassSuite.run(Junit4ClassSuite.java:99)
    at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:40)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at com.intellij.rt.execution.application.AppMain.main(AppMain.java:90)
Caused by: org.springframework.beans.factory.BeanDefinitionStoreException: IOException parsing XML document from class path resource [web/WEB-INF/applicationContext.xml]; nested exception is java.io.FileNotFoundException: class path resource [web/WEB-INF/applicationContext.xml] cannot be opened because it does not exist
    at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:349)
    at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:310)
    at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:143)
    at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:178)
    at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:149)
    at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:212)
    at org.springframework.test.context.support.AbstractGenericContextLoader.loadContext(AbstractGenericContextLoader.java:81)
    at org.springframework.test.context.support.AbstractGenericContextLoader.loadContext(AbstractGenericContextLoader.java:42)
    at org.springframework.test.context.TestContext.loadApplicationContext(TestContext.java:173)
    at org.springframework.test.context.TestContext.getApplicationContext(TestContext.java:199)
    ... 22 more
Caused by: java.io.FileNotFoundException: class path resource [web/WEB-INF/applicationContext.xml] cannot be opened because it does not exist
    at org.springframework.core.io.ClassPathResource.getInputStream(ClassPathResource.java:142)
    at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:336)
    ... 31 more


Process finished with exit code -1


Вопрос  - как правильно указать пути до спринговых файлов, которые лежат в WEB-INF. Пробовал по-разному, все не работает
Вот как пробовал:
@ContextConfiguration(locations = {"/web/WEB-INF/applicationContext.xml", "/web/WEB-INF/database-config.xml"})
@ContextConfiguration(locations = {"web/WEB-INF/applicationContext.xml", "web/WEB-INF/database-config.xml"})
@ContextConfiguration(locations = {"../web/WEB-INF/applicationContext.xml", "../web/WEB-INF/database-config.xml"})
@ContextConfiguration(locations = {"..web/WEB-INF/applicationContext.xml", "..web/WEB-INF/database-config.xml"})
@ContextConfiguration(locations = {"../WEB-INF/applicationContext.xml", "../WEB-INF/database-config.xml"})
@ContextConfiguration(locations = {"..WEB-INF/applicationContext.xml", "..WEB-INF/database-config.xml"})
@ContextConfiguration(locations = {"../applicationContext.xml", "../database-config.xml"})

Ничего не работает. Как правильно указать путь?




PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java tools & IDE's | Следующая тема »


 




[ Время генерации скрипта: 0.1287 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.