Чат, привет. А дайте пожта ценный совет что почитать чтобы научиться Java 8, я умею python/clojure теперь вот надо научиться Java на хорошем уровне. Спасибо!
@kuzmin_m Ну как-то не встретилось трудностей https://github.com/serioga/test-protocol-testing
@serioga ^^^
значит просто перечисляешь нужные тесты в каждой реализации, если набор тестов разный
набор тестов одинаковый
и вообще, смотря что за тест он же может и не использовать реализацию
разный контекст
еще раз 😃
есть протокол
есть 2 реализации
я хочу наложить на реализации некоторые ограничения
которые нельзя выразить clojure.spec например
> я хочу наложить на реализации некоторые ограничения про это ничего не было сказано
да
т.е. скажем, у меня есть протокол для генерации идентификаторов
и там один метод
я сделал в рамках того, что обсуждалось
я хочу, чтобы все его реализации возвращали pos-in?
и принимали как параметр пространство в котором нужно генерировать id
и это пространство - keyword
пока просто
а теперь у меня есть более сложный протокол
и я хочу проверить, что реализация правильно работает в многопоточном окружении
и это уже именно проверки кодом
> и принимали как параметр пространство в котором нужно генерировать id заведи ещё одну динамическую переменную, для пространства генерации айди
ты не понял =(
вот смотри
у тебя есть вилка и розетка
электрические
я понял, что у тебя постоянно усложняются условия задачи
есть их “протокол” - стандарт
и я хочу проверять реализует ли этот стандарт реализацию
выдерживает ли розетка ток, указанный в стандарте
выдерживает ли она удары молотком
и т.п.
@serioga тесты решают эту задачу? или я неправильный инструмент выбрал?
я вижу, что вариант с ns-hook позволяет как угодно перековырять поведение тестов и надстроить сверху всё-что угодно. то есть проблему написать любую сложную машинерию не вижу
смотри
есть ns-hook
программные тесты не решают задачу ударов молотком
в нем вызываются несколько тестов
и каждый этот тест нужно завернуть в фикстуру
или ты предлагаешь как-то так:
(defn test-suite []
(*wrapper* test-bar)
(*wrapper* test-baz))
я предлагаю написать так, как требует задача
но я вижу, что твою задачу я до конца не знаю
test-suite
нужен только для того, чтобы было идентичное тестирование для обоих реализаций
если тестирование не идентичное, то у каждой реализации в ns-hook пишется что-то своё, с использованием тестов из протокольной части
давай так, у тебя есть время/желание продолжать?
то есть я просто проверил способ переиспользования тестов реализациями, не более того
> давай так, у тебя есть время/желание продолжать? ну, только если ты по прежнему видешь какую-то неразрешимую проблему, которую ты хотел бы решить ну и не сейчас, конечно, а вечером или на выходных
можно даже голосом
вопрос остался - да попробую сделать маленький пример чтобы было с чем работать
вечер - это во сколько?
после 19 CET
примерно как в предыдущии дни было
> попробую сделать маленький пример давай проект на гитхабе, желательно lein based
https://github.com/darkleaf/protocol-testing сам протокол, обвязка, тесты еще будут рефакториться, это не предмет вопроса. вопрос в том, как убрать дублирование в тестах + https://github.com/darkleaf/protocol-testing/blob/master/test/protocol_testing/storage_fake_test.clj + https://github.com/darkleaf/protocol-testing/blob/master/test/protocol_testing/storage_impl_test.clj
тебе как, патч дать или pull request?
@kuzmin_m ^^^^
PR
@kuzmin_m я попробовал вчера сделать PR, мне прав не хватило
13:20 Can't Create Pull Request
Push failed:
remote: Permission to darkleaf/protocol-testing.git denied to serioga.
unable to access '<https://github.com/darkleaf/protocol-testing.git/>': The requested URL returned error: 403
форкни или патч пришли
@kuzmin_m https://github.com/serioga/protocol-testing/commit/ef8d92e7f59e791826ad63fbb411074ec692449d
спасибо, завтра посмотрю как тесты в repl запускаются
из репла не пробовал :thinking_face:
cider что-то не захотел работать с test-ns-hook, Пришлось его заменить на deftest и вызывать в нем test-suit. Спасибо за помощь. Но все равно все криво выклядит. Хочется удобства, поддержки в ide, хотя о чем я) Или просто тесты продублирую или возьму за основу твой вариант.
звать тесты из тестов, тоже интересная идея 🙂
один протокол, две реализации, тестируются единым набором тестов
из некрасивого только упоминание холостого тестирования неймспейса с набором тестов
самая сложная часть была в ооп, которым я практически не пользуюсь
(defn test-suite
[]
(test-bar)
(test-baz))
реализацию нужно на кадый тест новую заводить
в этом проблема