Имя: Пароль:
IT
 
Java. Нет доступа к объекту, как его валидировать?
,
0 Steel_Wheel
 
29.09.13
15:06
Всем привет.
Есть описание объекта, реализации нет. Мой класс испольует этот объект. Как лучше его провалидировать, без создания фейкового класса, если известны функции объекта.

Подскажите, куда глянуть, что прочитать
1 Чайник Рассела
 
29.09.13
15:16
вот же
http://1c.ru/club/
2 Принт
 
29.09.13
15:28
Для начала нужно определиться с критериями валидности, а затем получить доступ к объекту, чтобы убедиться в соответствии его реализации выбранным критериям.
3 Steel_Wheel
 
29.09.13
15:31
(1) не катит, причем по всем параметрам. Не можешь дать совет -- постой в сторонке, посмтори на умных дядь. Может, сам умнее станешь

(2) Они есть. Доступа к объекту не предвидится.
Мне дали интерфейс, я должен отдать код, который выполняет функцию от доступных объектов интерфейса....

Моя задача: знать, что мой код валиден. Объект -- 200 полей с геттерами/сеттерами. Я могу написать свой фейк, но, полагаю, что проблема не нова, и как это это можно решить средствами, например, jUnit
4 Steel_Wheel
 
29.09.13
15:31
*от доступных объектов интерфейса....  -- от доступных методов, конечно же
5 ДенисЧ
 
29.09.13
16:49
Автор спросил какую-то НЕХ... И хочет ответа...
6 Steel_Wheel
 
29.09.13
17:26
(5) ну, не со всем...

вот смотри, утебя в СВН есть интерфейс -- это договор о том, что есть у объекта.

как смоделировать этот объект с минимальными усилиями, если у тебя нет реализации?
7 Steel_Wheel
 
29.09.13
17:27
и ты пишешь свой объект, который опирается на чужой объект, котоого нет в СВН, но есть интерфейс. Как ты можешь гарантирповать, что твой код работает.

У меня цель -- определить дефект объекта из СВН, а потом его заюзаь. С использованием определился, с валидацией проблемка
8 NS
 
29.09.13
17:58
9 iamnub
 
29.09.13
18:03
(0)
Ну вот например я - вообще не понимаю - что ты пишешь.

"Есть описание объекта, реализации нет." - что такое описание? В стихах?

"Как лучше его провалидировать" - это что? Проверить отступы в коде?

" я должен отдать код, который выполняет функцию от доступных объектов интерфейса.... " - это вообще феерия. Но раз должен - отдай.
10 Steel_Wheel
 
29.09.13
18:10
(9) описание -- интерфейс (interface)
провалидировать -- пингануть его методы на ОДЗ (область допустимых значений)

Мне надо создать класс, который работает с вот этим интерфейсом. Класс должен работать хорошо, но что мне на вход придет -- это я хз. И вот это я должен проверить
11 Steel_Wheel
 
29.09.13
18:16
(8) Это все-таки не совсем то.
Может, я криво описал задачу. Мне надо симулировать присутствие объекта. У объекта 1000 геттеров. Я не хочу писать себе 1000 методов в код теста, чтобы проект скомпилировать. Мне нужно от силы 30 (это тоже много).

Интерфейс определен, мне нужна фабрика объектов по определенному интерфейсу, чтобы проверить свой код -- работает он или нет
12 iamnub
 
29.09.13
18:16
(10)
Работает с этим интерфейсом - реализует его, или вызывает методы у некоего объекта реализующего этот интерфейс?
13 NS
 
29.09.13
18:19
В (8) написано как перехватывать методы объектов.
Перехватываешь, и смотришь, что тебе приходит.
Если ты правильно прочитал статью - тебе не нужно писать сто методов. Тебе нужно написать один метод перехвата вызовов. В котором вызываемый метод в строковом виде ты можешь получить через context.getMethod()
14 Steel_Wheel
 
29.09.13
18:36
(12) вызывает методы. Т.е. я не знаю реализации (мне это и не надо), я знаю интерфейс. И этот объект надо проверить. Как проверять я знаю, мне нужен "экземпляр объекта, похожий на настоящий". И чтобы не я его писал. Я, конечно, могу, но 1000 геттеров -- это печально

(13) там больше девелоперское решение, если я правильно понял. А мне нужно в плоскости юнит-теста. Мокирование ближе. А статья хорошая
15 Лефмихалыч
 
29.09.13
19:06
автор, ты нашел, у кого спрашивать про яву... попробуй еще на форуме домохозяек
16 Steel_Wheel
 
29.09.13
19:23
(15) Не, тут есть люди, в которых я верю. Вот, НС тот же -- умный чувак  :)
17 sttt
 
29.09.13
19:44
тебе наверное сюда http://javascript.ru/ нужно
18 cViper
 
29.09.13
20:30
(0) В чем проблема написать свою реализацию?

class blablaImpl implements blabla {
...
}

Не совсем понимаю чего вы хотите, но может рефлексия поможет?!
19 cViper
 
29.09.13
20:31
(13) Там в статье про EJB написано. Думаю что это не нужно ТС.
20 Steel_Wheel
 
29.09.13
20:35
(18) У тебя есть 10000 свойств объекта. Им всем нужен геттер. Давай сыграем с тобой в игру....


В том то и дело, что фейковыую реализацию писать не охота и затратно. Как это обойти?
21 cViper
 
29.09.13
20:42
(20) Если у него столько свойств, то , скорее всего, он криво спроектирован. Это не нормально. Я вот не совсем понял что ты хочешь сделать в (11). Если ты хочешь сделать свой класс на основе интерфейса, но не хочешь реализовывать 1000 геттеров, то попробуй сделать класс обертку над этим объектом и проверь интересующие тебя 30 свойств. Пихаешь в эту обертку свой объект по интерфейсу и 30 методов связываешь с 30 методами интерфейса.
22 Steel_Wheel
 
29.09.13
20:47
(21)я так и сделал... но это не совсем то, чтоя ищу
23 Steel_Wheel
 
29.09.13
20:47
и 1000 -- это условность, она тут для того, чтобы понять, что что-то не так в моем подходе
24 cViper
 
29.09.13
20:53
(22) "Как лучше его провалидировать" - что ты имеешь ввиду?! Проверить на null? Или проверить на корректность объекта бизнес логики? Почему интерфейс сам не предоставляет такой метод (isValid())?
25 Steel_Wheel
 
29.09.13
21:07
(24) я хочу проверить на валидность бизнес-логики. Это моя задача.


Я аписал код, его надо проверть. Но как я его роверю, если реализациив СВН нет? Отдавать плохой код -- не вариант
26 cViper
 
29.09.13
21:16
(25) Так смысл в том, чтобы не зная реализации программировать от интерфейса. Если есть понимание как должен работать объект(сделан нормальный джавадок ), то надо писать без реализации. Если нет доки и хочется протестировать, то я бы сделал так:
-Сделал бы фабрику, возращающую объекты интерфейса.
-Сделал бы свою реализацию интерфейса(адаптер). Реализовав только нужные мне методы, которые хочу проверить. Остальные оставил бы пустыми.
-По тестовому ключу возвращал бы из этой фабрики этот объект.
27 Steel_Wheel
 
29.09.13
21:18
(26) это то, что надо.
а нет ли какой фигни, которая делает мокап по интерфейсу?
28 Steel_Wheel
 
29.09.13
21:20
Грубо говоря. Мне надо написать юнит-тест объекта по интерфейсу. Естественно, тест должен работать. А как это проверить без реализации объекта -- хз
29 cViper
 
29.09.13
21:24
(0) Что такое мокап? А никак и не проверишь. Есть такой термин TDD - test driven development. Там смысл в том, что сперва пишешь тест, а потом уже реализаци.
30 cViper
 
29.09.13
21:24
31 Steel_Wheel
 
29.09.13
21:25
32 Steel_Wheel
 
29.09.13
21:27
(30) я тестер....

блин, мне нужно порлучить тонну объектов по интерфейсу, чтобы видеть, чт метод не упал

и как это вот сделать?
33 Steel_Wheel
 
02.10.13
01:02
В общем, написал фековый Data Provider, который инициализировал свойств рандомными значения свойств. Криво, но что поделать

jMock и Mockito работают, но они инициализируют значениями по умлочанию, что для тестов плохо

jUnit Theory требуют доступа к конструктору, а о нем я ничего не знаю.
34 Steel_Wheel
 
03.10.13
00:31
(26) Ну, вот так и сделал...
Независимо от того, куда вы едете — это в гору и против ветра!