Форум программистов, компьютерный форум, киберфорум
Java: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.91/11: Рейтинг темы: голосов - 11, средняя оценка - 4.91
19 / 19 / 1
Регистрация: 12.03.2018
Сообщений: 252

JUnit тесты для базы данных

10.07.2018, 10:21. Показов 2214. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Начал осваивать юнит тестирование, и появился один вопрос.

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
      BaseDataConnect baseDataConnect = new BaseDataConnect();
    private final String day1 = "01/02/2018";
    private final String day2 = "02/02/2018";
    ArrayList<Task> tasksDay1 = new ArrayList<>();
    ArrayList<Task> tasksDay2 = new ArrayList<>();
 
 
 
 
    @Before
    public void genBefore(){
        // Записываем в ArrayList данные, они понадобятся для тестов.
        tasksDay1.add(new Task(2 ,day1, "Задача 1", 0, 0));
        tasksDay1.add(new Task(3, day1, "Задача 2", 0, 0));
        tasksDay1.add(new Task(4, day1, "Задача 3", 0, 0));
        tasksDay1.add(new Task(5, day1, "Задача 4", 0, 0));
       // Записываем это, в БД
        baseDataConnect.insertTask(new Task(day1, "Задача 1", 0));
        baseDataConnect.insertTask(new Task(day1, "Задача 2", 0));
        baseDataConnect.insertTask(new Task(day1, "Задача 3", 0));
        baseDataConnect.insertTask(new Task(day1, "Задача 4", 0));
        // Все тоже самое.
        tasksDay2.add(new Task(day2, "Задача 1", 0));
        tasksDay2.add(new Task(day2, "Задача 2", 0));
        tasksDay2.add(new Task(day2, "Задача 3", 0));
        baseDataConnect.insertTask(tasksDay2.get(0));
        baseDataConnect.insertTask(tasksDay2.get(1));
        baseDataConnect.insertTask(tasksDay2.get(2));
    }
 
    @Test
    public void getTaskByData() throws Exception {
        ArrayList<Task> tasks = baseDataConnect.getTaskByData(day1);
        assertEquals(tasks.get(0), tasksDay1.get(0));
 
    }
В методе @Test происходит сравнение объекта созданного, и отправленного в БД, с просто созданным, объектом внутри этого класса.
Но проблема в том, что Unit тест находит ошибку между, двумя идентичными объектами, просто потому что в конце, есть сгенерированный пробел


Как правильно писать тесты для БД

И почему, первый инсерт объект имеет значение индекса 2? Мне из за этого пришлось, начинать АррэйЛист с двойки
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
10.07.2018, 10:21
Ответы с готовыми решениями:

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

JUnit тесты
Доброго времени суток, знатоки. :) Написал незамысловатый код по заданию, заказчик просит юнит тесты. Вот код: public class...

Junit and Mockito тесты
Добрый день Мне тут задали некоторое небольшое задание сделать. Почти сделел только остались тесты. Но мне нужен взгляд со...

6
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7392 / 4819 / 1246
Регистрация: 30.03.2015
Сообщений: 13,694
Записей в блоге: 29
10.07.2018, 10:29
Лучший ответ Сообщение было отмечено Artyr2 как решение

Решение

Цитата Сообщение от Artyr2 Посмотреть сообщение
тест находит ошибку между, двумя идентичными объектами
если идентичны, то и ошибки не будет. Метод equals в Task реализован?
Покажи конкретный стек ошибки сравнения от жЮнита в стиле ожидалось, но получили
1
19 / 19 / 1
Регистрация: 12.03.2018
Сообщений: 252
10.07.2018, 11:27  [ТС]
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
"C:\Program Files\Java\jdk1.8.0_171\bin\java.exe" -ea -Didea.test.cyclic.buffer.size=1048576 "-javaagent:C:\IntelliJ IDEA 2018.1.5\lib\idea_rt.jar=55735:C:\IntelliJ IDEA 2018.1.5\bin" -Dfile.encoding=UTF-8 -classpath "C:\IntelliJ IDEA 2018.1.5\lib\idea_rt.jar;C:\IntelliJ IDEA 2018.1.5\plugins\junit\lib\junit-rt.jar;C:\IntelliJ IDEA 2018.1.5\plugins\junit\lib\junit5-rt.jar;C:\Program Files\Java\jdk1.8.0_171\jre\lib\charsets.jar;C:\Program Files\Java\jdk1.8.0_171\jre\lib\deploy.jar;C:\Program Files\Java\jdk1.8.0_171\jre\lib\ext\access-bridge-64.jar;C:\Program Files\Java\jdk1.8.0_171\jre\lib\ext\cldrdata.jar;C:\Program Files\Java\jdk1.8.0_171\jre\lib\ext\dnsns.jar;C:\Program Files\Java\jdk1.8.0_171\jre\lib\ext\jaccess.jar;C:\Program Files\Java\jdk1.8.0_171\jre\lib\ext\jfxrt.jar;C:\Program Files\Java\jdk1.8.0_171\jre\lib\ext\localedata.jar;C:\Program Files\Java\jdk1.8.0_171\jre\lib\ext\nashorn.jar;C:\Program Files\Java\jdk1.8.0_171\jre\lib\ext\sunec.jar;C:\Program Files\Java\jdk1.8.0_171\jre\lib\ext\sunjce_provider.jar;C:\Program Files\Java\jdk1.8.0_171\jre\lib\ext\sunmscapi.jar;C:\Program Files\Java\jdk1.8.0_171\jre\lib\ext\sunpkcs11.jar;C:\Program Files\Java\jdk1.8.0_171\jre\lib\ext\zipfs.jar;C:\Program Files\Java\jdk1.8.0_171\jre\lib\javaws.jar;C:\Program Files\Java\jdk1.8.0_171\jre\lib\jce.jar;C:\Program Files\Java\jdk1.8.0_171\jre\lib\jfr.jar;C:\Program Files\Java\jdk1.8.0_171\jre\lib\jfxswt.jar;C:\Program Files\Java\jdk1.8.0_171\jre\lib\jsse.jar;C:\Program Files\Java\jdk1.8.0_171\jre\lib\management-agent.jar;C:\Program Files\Java\jdk1.8.0_171\jre\lib\plugin.jar;C:\Program Files\Java\jdk1.8.0_171\jre\lib\resources.jar;C:\Program Files\Java\jdk1.8.0_171\jre\lib\rt.jar;C:\Users\Artyr\Desktop\Todo-master\target\test-classes;C:\Users\Artyr\Desktop\Todo-master\target\classes;C:\Users\Artyr\.m2\repository\org\springframework\boot\spring-boot-starter-web\2.0.3.RELEASE\spring-boot-starter-web-2.0.3.RELEASE.jar;C:\Users\Artyr\.m2\repository\org\springframework\boot\spring-boot-starter\2.0.3.RELEASE\spring-boot-starter-2.0.3.RELEASE.jar;C:\Users\Artyr\.m2\repository\org\springframework\boot\spring-boot-starter-logging\2.0.3.RELEASE\spring-boot-starter-logging-2.0.3.RELEASE.jar;C:\Users\Artyr\.m2\repository\ch\qos\logback\logback-classic\1.2.3\logback-classic-1.2.3.jar;C:\Users\Artyr\.m2\repository\ch\qos\logback\logback-core\1.2.3\logback-core-1.2.3.jar;C:\Users\Artyr\.m2\repository\org\apache\logging\log4j\log4j-to-slf4j\2.10.0\log4j-to-slf4j-2.10.0.jar;C:\Users\Artyr\.m2\repository\org\apache\logging\log4j\log4j-api\2.10.0\log4j-api-2.10.0.jar;C:\Users\Artyr\.m2\repository\org\slf4j\jul-to-slf4j\1.7.25\jul-to-slf4j-1.7.25.jar;C:\Users\Artyr\.m2\repository\javax\annotation\javax.annotation-api\1.3.2\javax.annotation-api-1.3.2.jar;C:\Users\Artyr\.m2\repository\org\springframework\boot\spring-boot-starter-json\2.0.3.RELEASE\spring-boot-starter-json-2.0.3.RELEASE.jar;C:\Users\Artyr\.m2\repository\com\fasterxml\jackson\core\jackson-databind\2.9.6\jackson-databind-2.9.6.jar;C:\Users\Artyr\.m2\repository\com\fasterxml\jackson\core\jackson-annotations\2.9.0\jackson-annotations-2.9.0.jar;C:\Users\Artyr\.m2\repository\com\fasterxml\jackson\core\jackson-core\2.9.6\jackson-core-2.9.6.jar;C:\Users\Artyr\.m2\repository\com\fasterxml\jackson\datatype\jackson-datatype-jdk8\2.9.6\jackson-datatype-jdk8-2.9.6.jar;C:\Users\Artyr\.m2\repository\com\fasterxml\jackson\datatype\jackson-datatype-jsr310\2.9.6\jackson-datatype-jsr310-2.9.6.jar;C:\Users\Artyr\.m2\repository\com\fasterxml\jackson\module\jackson-module-parameter-names\2.9.6\jackson-module-parameter-names-2.9.6.jar;C:\Users\Artyr\.m2\repository\org\springframework\boot\spring-boot-starter-tomcat\2.0.3.RELEASE\spring-boot-starter-tomcat-2.0.3.RELEASE.jar;C:\Users\Artyr\.m2\repository\org\apache\tomcat\embed\tomcat-embed-core\8.5.31\tomcat-embed-core-8.5.31.jar;C:\Users\Artyr\.m2\repository\org\apache\tomcat\embed\tomcat-embed-el\8.5.31\tomcat-embed-el-8.5.31.jar;C:\Users\Artyr\.m2\repository\org\apache\tomcat\embed\tomcat-embed-websocket\8.5.31\tomcat-embed-websocket-8.5.31.jar;C:\Users\Artyr\.m2\repository\org\hibernate\validator\hibernate-validator\6.0.10.Final\hibernate-validator-6.0.10.Final.jar;C:\Users\Artyr\.m2\repository\javax\validation\validation-api\2.0.1.Final\validation-api-2.0.1.Final.jar;C:\Users\Artyr\.m2\repository\org\jboss\logging\jboss-logging\3.3.2.Final\jboss-logging-3.3.2.Final.jar;C:\Users\Artyr\.m2\repository\com\fasterxml\classmate\1.3.4\classmate-1.3.4.jar;C:\Users\Artyr\.m2\repository\org\springframework\spring-web\5.0.7.RELEASE\spring-web-5.0.7.RELEASE.jar;C:\Users\Artyr\.m2\repository\org\springframework\spring-beans\5.0.7.RELEASE\spring-beans-5.0.7.RELEASE.jar;C:\Users\Artyr\.m2\repository\org\springframework\spring-webmvc\5.0.7.RELEASE\spring-webmvc-5.0.7.RELEASE.jar;C:\Users\Artyr\.m2\repository\org\springframework\spring-aop\5.0.7.RELEASE\spring-aop-5.0.7.RELEASE.jar;C:\Users\Artyr\.m2\repository\org\springframework\spring-context\5.0.7.RELEASE\spring-context-5.0.7.RELEASE.jar;C:\Users\Artyr\.m2\repository\org\springframework\spring-expression\5.0.7.RELEASE\spring-expression-5.0.7.RELEASE.jar;C:\Users\Artyr\.m2\repository\org\springframework\boot\spring-boot-starter-thymeleaf\2.0.3.RELEASE\spring-boot-starter-thymeleaf-2.0.3.RELEASE.jar;C:\Users\Artyr\.m2\repository\org\thymeleaf\thymeleaf-spring5\3.0.9.RELEASE\thymeleaf-spring5-3.0.9.RELEASE.jar;C:\Users\Artyr\.m2\repository\org\thymeleaf\thymeleaf\3.0.9.RELEASE\thymeleaf-3.0.9.RELEASE.jar;C:\Users\Artyr\.m2\repository\org\attoparser\attoparser\2.0.4.RELEASE\attoparser-2.0.4.RELEASE.jar;C:\Users\Artyr\.m2\repository\org\unbescape\unbescape\1.1.5.RELEASE\unbescape-1.1.5.RELEASE.jar;C:\Users\Artyr\.m2\repository\org\thymeleaf\extras\thymeleaf-extras-java8time\3.0.1.RELEASE\thymeleaf-extras-java8time-3.0.1.RELEASE.jar;C:\Users\Artyr\.m2\repository\org\springframework\boot\spring-boot-devtools\2.0.3.RELEASE\spring-boot-devtools-2.0.3.RELEASE.jar;C:\Users\Artyr\.m2\repository\org\springframework\boot\spring-boot\2.0.3.RELEASE\spring-boot-2.0.3.RELEASE.jar;C:\Users\Artyr\.m2\repository\org\springframework\boot\spring-boot-autoconfigure\2.0.3.RELEASE\spring-boot-autoconfigure-2.0.3.RELEASE.jar;C:\Users\Artyr\.m2\repository\org\springframework\boot\spring-boot-starter-test\2.0.3.RELEASE\spring-boot-starter-test-2.0.3.RELEASE.jar;C:\Users\Artyr\.m2\repository\org\springframework\boot\spring-boot-test\2.0.3.RELEASE\spring-boot-test-2.0.3.RELEASE.jar;C:\Users\Artyr\.m2\repository\org\springframework\boot\spring-boot-test-autoconfigure\2.0.3.RELEASE\spring-boot-test-autoconfigure-2.0.3.RELEASE.jar;C:\Users\Artyr\.m2\repository\com\jayway\jsonpath\json-path\2.4.0\json-path-2.4.0.jar;C:\Users\Artyr\.m2\repository\net\minidev\json-smart\2.3\json-smart-2.3.jar;C:\Users\Artyr\.m2\repository\net\minidev\accessors-smart\1.2\accessors-smart-1.2.jar;C:\Users\Artyr\.m2\repository\org\ow2\asm\asm\5.0.4\asm-5.0.4.jar;C:\Users\Artyr\.m2\repository\org\assertj\assertj-core\3.9.1\assertj-core-3.9.1.jar;C:\Users\Artyr\.m2\repository\org\mockito\mockito-core\2.15.0\mockito-core-2.15.0.jar;C:\Users\Artyr\.m2\repository\net\bytebuddy\byte-buddy\1.7.11\byte-buddy-1.7.11.jar;C:\Users\Artyr\.m2\repository\net\bytebuddy\byte-buddy-agent\1.7.11\byte-buddy-agent-1.7.11.jar;C:\Users\Artyr\.m2\repository\org\objenesis\objenesis\2.6\objenesis-2.6.jar;C:\Users\Artyr\.m2\repository\org\hamcrest\hamcrest-core\1.3\hamcrest-core-1.3.jar;C:\Users\Artyr\.m2\repository\org\hamcrest\hamcrest-library\1.3\hamcrest-library-1.3.jar;C:\Users\Artyr\.m2\repository\org\skyscreamer\jsonassert\1.5.0\jsonassert-1.5.0.jar;C:\Users\Artyr\.m2\repository\com\vaadin\external\google\android-json\0.0.20131108.vaadin1\android-json-0.0.20131108.vaadin1.jar;C:\Users\Artyr\.m2\repository\org\springframework\spring-core\5.0.7.RELEASE\spring-core-5.0.7.RELEASE.jar;C:\Users\Artyr\.m2\repository\org\springframework\spring-jcl\5.0.7.RELEASE\spring-jcl-5.0.7.RELEASE.jar;C:\Users\Artyr\.m2\repository\org\springframework\spring-test\5.0.7.RELEASE\spring-test-5.0.7.RELEASE.jar;C:\Users\Artyr\.m2\repository\org\xmlunit\xmlunit-core\2.5.1\xmlunit-core-2.5.1.jar;C:\Users\Artyr\.m2\repository\org\mybatis\mybatis\3.4.6\mybatis-3.4.6.jar;C:\Users\Artyr\.m2\repository\org\mybatis\mybatis-spring\1.3.2\mybatis-spring-1.3.2.jar;C:\Users\Artyr\.m2\repository\org\slf4j\slf4j-api\1.7.25\slf4j-api-1.7.25.jar;C:\Users\Artyr\.m2\repository\org\slf4j\slf4j-log4j12\1.7.25\slf4j-log4j12-1.7.25.jar;C:\Users\Artyr\.m2\repository\log4j\log4j\1.2.17\log4j-1.2.17.jar;C:\Users\Artyr\.m2\repository\org\xerial\sqlite-jdbc\3.23.1\sqlite-jdbc-3.23.1.jar;C:\Users\Artyr\.m2\repository\org\webjars\bower\jquery\3.3.1\jquery-3.3.1.jar;C:\Users\Artyr\.m2\repository\org\webjars\bootstrap\4.1.1\bootstrap-4.1.1.jar;C:\Users\Artyr\.m2\repository\org\webjars\jquery\3.0.0\jquery-3.0.0.jar;C:\Users\Artyr\.m2\repository\org\webjars\popper.js\1.14.1\popper.js-1.14.1.jar;C:\Users\Artyr\.m2\repository\junit\junit\4.12\junit-4.12.jar;C:\Users\Artyr\.m2\repository\org\apache\cassandra\cassandra-all\0.8.1\cassandra-all-0.8.1.jar;C:\Users\Artyr\.m2\repository\com\google\guava\guava\r08\guava-r08.jar;C:\Users\Artyr\.m2\repository\commons-cli\commons-cli\1.1\commons-cli-1.1.jar;C:\Users\Artyr\.m2\repository\commons-codec\commons-codec\1.11\commons-codec-1.11.jar;C:\Users\Artyr\.m2\repository\commons-collections\commons-collections\3.2.1\commons-collections-3.2.1.jar;C:\Users\Artyr\.m2\repository\commons-lang\commons-lang\2.4\commons-lang-2.4.jar;C:\Users\Artyr\.m2\repository\com\googlecode\concurrentlinkedhashmap\concurrentlinkedhashmap-lru\1.1\concurrentlinkedhashmap-lru-1.1.jar;C:\Users\Artyr\.m2\repository\org\antlr\antlr\3.2\antlr-3.2.jar;C:\Users\Artyr\.m2\repository\org\antlr\antlr-runtime\3.2\antlr-runtime-3.2.jar;C:\Users\Artyr\.m2\repository\org\antlr\stringtemplate\3.2\stringtemplate-3.2.jar;C:\Users\Artyr\.m2\repository\antlr\antlr\2.7.7\antlr-2.7.7.jar;C:\Users\Artyr\.m2\repository\org\apache\cassandra\deps\avro\1.4.0-cassandra-1\avro-1.4.0-cassandra-1.jar;C:\Users\Artyr\.m2\repository\org\mortbay\jetty\jetty\6.1.22\jetty-6.1.22.jar;C:\Users\Artyr\.m2\repository\org\mortbay\jetty\jetty-util\6.1.22\jetty-util-6.1.22.jar;C:\Users\Artyr\.m2\repository\org\mortbay\jetty\servlet-api\2.5-20081211\servlet-api-2.5-20081211.jar;C:\Users\Artyr\.m2\repository\org\codehaus\jackson\jackson-core-asl\1.4.0\jackson-core-asl-1.4.0.jar;C:\Users\Artyr\.m2\repository\org\codehaus\jackson\jackson-mapper-asl\1.4.0\jackson-mapper-asl-1.4.0.jar;C:\Users\Artyr\.m2\repository\jline\jline\0.9.94\jline-0.9.94.jar;C:\Users\Artyr\.m2\repository\com\googlecode\json-simple\json-simple\1.1.1\json-simple-1.1.1.jar;C:\Users\Artyr\.m2\repository\com\github\stephenc\high-scale-lib\high-scale-lib\1.1.2\high-scale-lib-1.1.2.jar;C:\Users\Artyr\.m2\repository\org\yaml\snakeyaml\1.19\snakeyaml-1.19.jar;C:\Users\Artyr\.m2\repository\org\apache\thrift\libthrift\0.6.1\libthrift-0.6.1.jar;C:\Users\Artyr\.m2\repository\javax\servlet\servlet-api\2.5\servlet-api-2.5.jar;C:\Users\Artyr\.m2\repository\org\apache\httpcomponents\httpclient\4.5.5\httpclient-4.5.5.jar;C:\Users\Artyr\.m2\repository\org\apache\httpcomponents\httpcore\4.4.9\httpcore-4.4.9.jar;C:\Users\Artyr\.m2\repository\org\apache\cassandra\cassandra-thrift\0.8.1\cassandra-thrift-0.8.1.jar;C:\Users\Artyr\.m2\repository\com\github\stephenc\jamm\0.2.2\jamm-0.2.2.jar" com.intellij.rt.execution.junit.JUnitStarter -ideVersion5 -junit4 Main.controller.BaseDataConnectTest,getTaskByData
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/C:/Users/Artyr/.m2/repository/ch/qos/logback/logback-classic/1.2.3/logback-classic-1.2.3.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/C:/Users/Artyr/.m2/repository/org/slf4j/slf4j-log4j12/1.7.25/slf4j-log4j12-1.7.25.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [ch.qos.logback.classic.util.ContextSelectorStaticBinder]
13:41:35.876 [main] DEBUG org.apache.ibatis.logging.LogFactory - Logging initialized using 'class org.apache.ibatis.logging.slf4j.Slf4jImpl' adapter.
13:41:36.029 [main] DEBUG org.apache.ibatis.datasource.pooled.PooledDataSource - PooledDataSource forcefully closed/removed all connections.
13:41:36.029 [main] DEBUG org.apache.ibatis.datasource.pooled.PooledDataSource - PooledDataSource forcefully closed/removed all connections.
13:41:36.029 [main] DEBUG org.apache.ibatis.datasource.pooled.PooledDataSource - PooledDataSource forcefully closed/removed all connections.
13:41:36.029 [main] DEBUG org.apache.ibatis.datasource.pooled.PooledDataSource - PooledDataSource forcefully closed/removed all connections.
13:41:36.110 [main] DEBUG org.apache.ibatis.transaction.jdbc.JdbcTransaction - Opening JDBC Connection
13:41:36.622 [main] DEBUG org.apache.ibatis.datasource.pooled.PooledDataSource - Created connection 520232556.
13:41:36.622 [main] DEBUG org.apache.ibatis.transaction.jdbc.JdbcTransaction - Setting autocommit to false on JDBC Connection [org.sqlite.SQLiteConnection@1f021e6c]
13:41:36.622 [main] DEBUG Main.mapper.TaskMapper.insertTaks - ==>  Preparing: insert into eventDay (day, label, state, priority) values (?,?, ?, 0) 
13:41:36.720 [main] DEBUG Main.mapper.TaskMapper.insertTaks - ==> Parameters: 01/02/2018(String), Задача 1(String), 0(Integer)
13:41:36.721 [main] DEBUG Main.mapper.TaskMapper.insertTaks - <==    Updates: 1
13:41:36.722 [main] DEBUG Main.mapper.TaskMapper.insertTaks - ==>  Preparing: insert into eventDay (day, label, state, priority) values (?,?, ?, 0) 
13:41:36.722 [main] DEBUG Main.mapper.TaskMapper.insertTaks - ==> Parameters: 01/02/2018(String), Задача 2(String), 0(Integer)
13:41:36.722 [main] DEBUG Main.mapper.TaskMapper.insertTaks - <==    Updates: 1
13:41:36.722 [main] DEBUG Main.mapper.TaskMapper.insertTaks - ==>  Preparing: insert into eventDay (day, label, state, priority) values (?,?, ?, 0) 
13:41:36.723 [main] DEBUG Main.mapper.TaskMapper.insertTaks - ==> Parameters: 01/02/2018(String), Задача 3(String), 0(Integer)
13:41:36.723 [main] DEBUG Main.mapper.TaskMapper.insertTaks - <==    Updates: 1
13:41:36.724 [main] DEBUG Main.mapper.TaskMapper.insertTaks - ==>  Preparing: insert into eventDay (day, label, state, priority) values (?,?, ?, 0) 
13:41:36.724 [main] DEBUG Main.mapper.TaskMapper.insertTaks - ==> Parameters: 01/02/2018(String), Задача 4(String), 0(Integer)
13:41:36.725 [main] DEBUG Main.mapper.TaskMapper.insertTaks - <==    Updates: 1
13:41:36.725 [main] DEBUG Main.mapper.TaskMapper.insertTaks - ==>  Preparing: insert into eventDay (day, label, state, priority) values (?,?, ?, 0) 
13:41:36.725 [main] DEBUG Main.mapper.TaskMapper.insertTaks - ==> Parameters: 02/02/2018(String), Задача 1(String), 0(Integer)
13:41:36.725 [main] DEBUG Main.mapper.TaskMapper.insertTaks - <==    Updates: 1
13:41:36.725 [main] DEBUG Main.mapper.TaskMapper.insertTaks - ==>  Preparing: insert into eventDay (day, label, state, priority) values (?,?, ?, 0) 
13:41:36.726 [main] DEBUG Main.mapper.TaskMapper.insertTaks - ==> Parameters: 02/02/2018(String), Задача 2(String), 0(Integer)
13:41:36.726 [main] DEBUG Main.mapper.TaskMapper.insertTaks - <==    Updates: 1
13:41:36.726 [main] DEBUG Main.mapper.TaskMapper.insertTaks - ==>  Preparing: insert into eventDay (day, label, state, priority) values (?,?, ?, 0) 
13:41:36.728 [main] DEBUG Main.mapper.TaskMapper.insertTaks - ==> Parameters: 02/02/2018(String), Задача 3(String), 0(Integer)
13:41:36.728 [main] DEBUG Main.mapper.TaskMapper.insertTaks - <==    Updates: 1
13:41:36.731 [main] DEBUG Main.mapper.TaskMapper.getTaskByDay - ==>  Preparing: select * from eventDay where day = ? 
13:41:36.732 [main] DEBUG Main.mapper.TaskMapper.getTaskByDay - ==> Parameters: 01/02/2018(String)
13:41:36.759 [main] DEBUG Main.mapper.TaskMapper.getTaskByDay - <==      Total: 4
 
java.lang.AssertionError: expected: Main.model.Task<id = 2
day = 01/02/2018
label = Задача 1
state = 0
priority = 0
> but was: Main.model.Task<id = 2
day = 01/02/2018
label = Задача 1
state = 0
priority = 0
> <Click to see difference>
 
 
    at org.junit.Assert.fail(Assert.java:88)
    at org.junit.Assert.failNotEquals(Assert.java:834)
    at org.junit.Assert.assertEquals(Assert.java:118)
    at org.junit.Assert.assertEquals(Assert.java:144)
    at Main.controller.BaseDataConnectTest.getTaskByData(BaseDataConnectTest.java:45)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
    at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
    at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
    at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
    at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
    at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
    at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
    at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
    at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
    at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
    at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
    at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
    at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
    at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:68)
    at com.intellij.rt.execution.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:47)
    at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:242)
    at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:70)
 
 
Process finished with exit code -1
Добавлено через 8 минут
Я нашел, решение. И это
Java
1
assertEquals(tasks.get(0).toString(), tasksDay1.get(0).toString());
Я просто перевожу, в строку, а не сравниваю объект с объектом. Но... мне кажется, или это костыль?

Добавлено через 2 минуты
Цитата Сообщение от Welemir1 Посмотреть сообщение
если идентичны, то и ошибки не будет. Метод equals в Task реализован?
Кстати, нет, его надо переопределить? Ладно, попробую.

И сразу вопрос, можно, ли в одном методе @Test несколько раз вызывать assertEquals?

Добавлено через 27 минут
Очень странно, я переопределил метод Equals

Java
1
2
3
4
5
6
7
8
9
10
 @Override
    public boolean equals(Object obj) {
        Task taskObj = (Task) obj;
        if(this.label != taskObj.label) return false;
        if(this.day != taskObj.day) return false;
        if(this.id != taskObj.id) return false;
        if(this.priority != taskObj.priority) return false;
        if(this.state != taskObj.state) return false;
        return true;
    }
Но ошибка не изменилась от слова совсем...

Зато в тестовом, классе все работает нормально

Java
1
2
3
4
5
6
7
8
9
10
public class Test {
    public static void main(String[] args) {
 
        
    Task task1 = new Task(0,"01/02/2018", "Новая задача", 0, 0);
    Task task2 = new Task(0,"01/02/2018", "Новая задача", 0, 0);
        System.out.println(task1.equals(task2)); // На выходе получаем true
 
    }
}
В чем проблема, почему Junit не может сравнить два объекта...

Добавлено через 7 минут
Извините за тупость, оказалось что я просто не правильно переопределил метод equals =)
Я там строки сравнивал через == а не через equals

Java
1
2
3
4
5
6
7
8
9
10
 @Override
    public boolean equals(Object obj) {
        Task taskObj = (Task) obj;
        if(!this.label.equals(taskObj.label)) return false;
        if(!this.day.equals(taskObj.day)) return false;
        if(this.id != taskObj.id) return false;
        if(this.priority != taskObj.priority) return false;
        if(this.state != taskObj.state) return false;
        return true;
    }
Теперь все работает, спасибо!
0
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7392 / 4819 / 1246
Регистрация: 30.03.2015
Сообщений: 13,694
Записей в блоге: 29
10.07.2018, 16:26
Цитата Сообщение от Artyr2 Посмотреть сообщение
И сразу вопрос, можно, ли в одном методе @Test несколько раз вызывать assertEquals?
можно, но не всегда нужно, сам подумай почему!
1
19 / 19 / 1
Регистрация: 12.03.2018
Сообщений: 252
10.07.2018, 19:48  [ТС]
Цитата Сообщение от Welemir1 Посмотреть сообщение
можно, но не всегда нужно, сам подумай почему!
Что, бы не усложнять. Из-за этого будет не понятно, какая, из внутренних проверок не сработала? В этом, случае наверное надо, сделать просто несколько отдельных тестов. =)
0
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7392 / 4819 / 1246
Регистрация: 30.03.2015
Сообщений: 13,694
Записей в блоге: 29
10.07.2018, 21:09
Artyr2, да, именно так.
но порой это имеет смысл как последовательность некоторых шагов, в успешности которых нужно убедиться. Когда тестируем что-то сложное и не из 1-2 шагов.
1
19 / 19 / 1
Регистрация: 12.03.2018
Сообщений: 252
10.07.2018, 21:35  [ТС]
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
package Main.controller;
 
import Main.model.Task;
import org.junit.Before;
import org.junit.Test;
 
import java.util.ArrayList;
 
import static org.junit.Assert.*;
 
public class BaseDataConnectTest {
    static BaseDataConnect baseDataConnect = new BaseDataConnect();
    static ArrayList<Task> tasksDay1 = new ArrayList<>();
    static {
        tasksDay1.add(new Task(2, "01/02/2018", "Задача 1", 0, 0));
        tasksDay1.add(new Task(3, "01/02/2018", "Задача 2", 0, 0));
        tasksDay1.add(new Task(4, "01/02/2018", "Задача 3", 0, 0));
        tasksDay1.add(new Task(5, "01/02/2018", "Задача 4", 0, 0));
        // Записываем это, в БД
        baseDataConnect.insertTask(new Task("01/02/2018", "Задача 1", 0));
        baseDataConnect.insertTask(new Task("01/02/2018", "Задача 2", 0));
        baseDataConnect.insertTask(new Task("01/02/2018", "Задача 3", 0));
        baseDataConnect.insertTask(new Task("01/02/2018", "Задача 4", 0));
    }
 
 
    @Test
    public void getTaskByData() {
        ArrayList<Task> tasks = baseDataConnect.getTaskByData("01/02/2018");
        assertEquals(tasksDay1, tasks);
    }
 
    @Test
    public void getTaskById() {
        assertEquals( tasksDay1.get(0),baseDataConnect.getTaskById(2));
    }
 
    @Test
    public void updateTask() {
        baseDataConnect.updateTask(new Task(2, "01/02/2018", "Задача 1 измененна", 0, 0));
        assertEquals("Задача 1 измененна", baseDataConnect.getTaskById(2).getLabel());
        baseDataConnect.updateTask(new Task(2, "01/02/2018", "Задача 1", 0, 0));
    }
 
    @Test
    public void insertTask() {
        baseDataConnect.insertTask(new Task("01/02/2018","InsertTask",0));
        ArrayList<Task> tasks = baseDataConnect.getTaskByData("01/02/2018");
        assertEquals(5, tasks.size());
 
    }
 
    @Test
    public void deleteTask() {
        baseDataConnect.deleteTask(6);
        ArrayList<Task> tasks = baseDataConnect.getTaskByData("01/02/2018");
        assertEquals(tasksDay1, tasks);
    }
 
    @Test
    public void updateState() {
        baseDataConnect.updateState(2);
        Task task = baseDataConnect.getTaskById(2);
        assertEquals(1, task.getState());
        baseDataConnect.updateState(2);
    }
 
    @Test
    public void incremPriority() {
        baseDataConnect.incremPriority(2);
        assertEquals(1,baseDataConnect.getTaskById(2).getPriority());
        baseDataConnect.incremPriority(2);
        assertEquals(2,baseDataConnect.getTaskById(2).getPriority());
        baseDataConnect.incremPriority(2);
        assertEquals(3,baseDataConnect.getTaskById(2).getPriority());
        baseDataConnect.incremPriority(2);
        assertEquals(3,baseDataConnect.getTaskById(2).getPriority());
    }
 
    @Test
    public void decrimPriority() {
        baseDataConnect.decrimPriority(2);
        baseDataConnect.decrimPriority(2);
        baseDataConnect.decrimPriority(2);
        assertEquals(0, baseDataConnect.getTaskById(2).getPriority());
    }
 
    @Test
    public void getListDay() {
        ArrayList<Task> tasksDay = baseDataConnect.getListDay();
        assertEquals(5,tasksDay.get(0).getState());
    }
}
У меня архитектура дерьмо? Я просто не совсем понимаю, как изолированно проверить каждую из команд, потому, что если мы что то удаляем, из БД, то мы должны это восстановить обратно, поэтому тест delete зависит от insert. Я не совсем понимаю как протестировать БД... Оцените, и скажите как правильно.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
10.07.2018, 21:35
Помогаю со студенческими работами здесь

JUnit тесты. Параметры в тестовом методе
Задача примерно следующуая. Предположим я написал функцию, которая тестирует класс с параметром конструктора 1000. То есть RandomFix...

JUnit. Как написать тесты, работающие с БД
Добрый день. Подскажите пожалуйста как правильно писать юнит тесты для методов которые открывают и закрывают конекшн к базе данных. ...

Junit тесты: как правильно реализовать проверку метода findAll?
Доброго времени суток, форумчане. Подскажите пожалуйста, как правильно реализовать проверку метода findAll() в junit-тестах?

Как обеспечить зависимость значений для ввода в поле базы данных от значения в другом поле базы данных?
В таблицу DicFactor вводятся факторы, а в связанную с ней таблицу FactorValue вводятся допустимые значения факторов. Например, для фактора...

Как обеспечить зависимость значений для ввода в поле базы данных от значения в другом поле базы данных?
Есть 2 таблицы справочников (все факторы и все возможные значения - tblDicFactor и tblDicFactorValue), для каждого фактора есть допустимые...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Модель ЗдрввоСохранения 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. Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru