Перейти к публикации
  • Сейчас на странице   Всего пользователей: 1   (0 пользователей, 1 гость)

Hed-kun

Программирование, т. 6

Рекомендованные сообщения

если тебе приходится вызывать методы закрытых полей с помощью рефлексии, то ты точно делаешь что-то не так

первая же мысль которая возникла при упоминании рефлексии

Поделиться сообщением


Ссылка на сообщение

если тебе приходится вызывать методы закрытых полей с помощью рефлексии, то ты точно делаешь что-то не так

 Есть поля экземпляра класса:

private Lock lock = new ReentrantLock();

private Condition condition = lock.newCondition();

Есть метод, который нужно протестировать В методе есть такая строка:

condition.signalAll();

Так как лок открывается  и закрывается не в этом методе, то просто тестировать этот метод не получится. condition.signalAll();будет работать только если он обрамлен локом и анлоком. Мне нужно как-то вызвать lock.lock() lock.unlock() в тестовом методе.

Возможные варианты:

1)сделать лок паблик - плохой вариант, сделать лок пекейдж привейт - тоже плохо и к тому же тест и класс в разных пэкейджах

2)сделать методы в классе для лока и анлока и вызывать их в тесте - тоже плохо

3)как-то сделать mock класса для теста

Поделиться сообщением


Ссылка на сообщение
(изменено)

вызывай тот метод, где он анлочится либо меняй к хуям архитектуру, которая повлекла за собой такой пиздец.

 

в идее с рефлексией ты на выходе получишь тест, который наглейшим образом нарушает инкапсуляцию и будет запускаться 400 лет, а еще тебе минус ебало сделают за такой тест и будут правы.


Изменено пользователем Supremus

Поделиться сообщением


Ссылка на сообщение

вызывай тот метод, где он анлочится либо меняй к хуям архитектуру, которая повлекла за собой такой пиздец.

 

в идее с рефлексией ты на выходе получишь тест, который наглейшим образом нарушает инкапсуляцию и будет запускаться 400 лет, а еще тебе минус ебало сделают за такой тест и будут правы.

Наверное, так и сделаю, просто чисто интересно, вообще можно ли вызывать методы полей или нет.

Поделиться сообщением


Ссылка на сообщение

 

если тебе приходится вызывать методы закрытых полей с помощью рефлексии, то ты точно делаешь что-то не так

 Есть поля экземпляра класса:

private Lock lock = new ReentrantLock();

private Condition condition = lock.newCondition();

Есть метод, который нужно протестировать В методе есть такая строка:

condition.signalAll();

Так как лок открывается  и закрывается не в этом методе, то просто тестировать этот метод не получится. condition.signalAll();будет работать только если он обрамлен локом и анлоком. Мне нужно как-то вызвать lock.lock() lock.unlock() в тестовом методе.

Возможные варианты:

1)сделать лок паблик - плохой вариант, сделать лок пекейдж привейт - тоже плохо и к тому же тест и класс в разных пэкейджах

2)сделать методы в классе для лока и анлока и вызывать их в тесте - тоже плохо

3)как-то сделать mock класса для теста

 

 

я так понимаю этот метод должен был быть приватным и вызываться где-то внутри класса в цепочке между lock/unlock

если нет, тогда в него нужно добавить lock/ulock

Поделиться сообщением


Ссылка на сообщение

 

 

если тебе приходится вызывать методы закрытых полей с помощью рефлексии, то ты точно делаешь что-то не так

 Есть поля экземпляра класса:

private Lock lock = new ReentrantLock();

private Condition condition = lock.newCondition();

Есть метод, который нужно протестировать В методе есть такая строка:

condition.signalAll();

Так как лок открывается  и закрывается не в этом методе, то просто тестировать этот метод не получится. condition.signalAll();будет работать только если он обрамлен локом и анлоком. Мне нужно как-то вызвать lock.lock() lock.unlock() в тестовом методе.

Возможные варианты:

1)сделать лок паблик - плохой вариант, сделать лок пекейдж привейт - тоже плохо и к тому же тест и класс в разных пэкейджах

2)сделать методы в классе для лока и анлока и вызывать их в тесте - тоже плохо

3)как-то сделать mock класса для теста

 

 

я так понимаю этот метод должен был быть приватным и вызываться где-то внутри класса в цепочке между lock/unlock

если нет, тогда в него нужно добавить lock/ulock

Просто так ставить лок/анлок в метод, только для того, чтобы тестировать можно было - не очень решение, как мне кажется.

Поделиться сообщением


Ссылка на сообщение

 

вызывай тот метод, где он анлочится либо меняй к хуям архитектуру, которая повлекла за собой такой пиздец.

 

в идее с рефлексией ты на выходе получишь тест, который наглейшим образом нарушает инкапсуляцию и будет запускаться 400 лет, а еще тебе минус ебало сделают за такой тест и будут правы.

Наверное, так и сделаю, просто чисто интересно, вообще можно ли вызывать методы полей или нет.

 

в джаве не знаю, а в шарпе можно.

Поделиться сообщением


Ссылка на сообщение

я тебе еще раз объясняю

в паблик методе без lock/unlock не должен вызваться .signal()

это надо пофиксить. если это твоя песочница то пофикси, если нет, то напиши разрабам чтобы пофиксили

зачем тестить сломанное говно?

 

но если тебе прям очень надо то вот тебе пример набросал

достаем лок, лочимся, вызываем тред который должен вставку сделать, но сделать он ее не может т.к. мы держим лок

try {

    ArrayBlockingQueue<Integer> queue = new ArrayBlockingQueue<>(10);

    Field lockField = ArrayBlockingQueue.class.getDeclaredField("lock");

    lockField.setAccessible(true);

    ReentrantLock lock = (ReentrantLock) lockField.get(queue);

    lock.lock();

    Thread t = new Thread(new Runnable() {

        @Override

        public void run() {

            queue.add(1);

            System.out.println("added");

        }

    });

    t.start();

    Thread.sleep(2000);

    System.out.println(queue.poll()); //returns null

    lock.unlock();

} catch (NoSuchFieldException | IllegalAccessException e) {

    throw new RuntimeException(e);

}

Поделиться сообщением


Ссылка на сообщение

выглядит неплохо

но разве таких не тонна разных?

Поделиться сообщением


Ссылка на сообщение

в том то и вопрос нахуй их столько

для ынтерпрайза есть Jira, а для стартапа из 2.5 человек пойдет и обычная доска на столе


:buba:

ни мало ни много, а много и мало

Поделиться сообщением


Ссылка на сообщение
(изменено)

Как же я ненавижу все эти DnD интерфейсы. Такой уебищный UX паттерн, просто жуть.

Он безусловно ахуенен в некоторых ситуациях, но вот смотрел гифки на этом сайте и у меня аж боль физическая была с некоторых моментов, когда я представлял как у тебя соскользает палец с мыши, багается днд или еще чего происходит, и ты потом сидишь и думаешь "бля что за хуйня произошла и как сделать revert?"

Даже в играх в интенторях смена позиций иметов и прочего делается по клику, ибо зажим лефтклика крайне нестабильная хуйня.

 

Бля, все это написал, а потом представил как я бы пытался эти маленькие хуйнюшки на тач панеле ноута драгать, когда там ивент может в любой момент случайно прерваться, ахахаха


Изменено пользователем suez
Rooster понравилось это

userbar-53933.png

http://codepen.io/suez/ - they see me bydlocoding, they hatin.

Поделиться сообщением


Ссылка на сообщение

щас бы говорить что драг енд дроп хуйня ибо вообще неудобно и палец соскальзывает.

На некоторых платформах это так, но на пк все с этим нормально у всех.

Поделиться сообщением


Ссылка на сообщение
(изменено)

ну на тачпадах днд это реально рак раков, а с мышкой то всё зависит от мышки


Изменено пользователем TheDeadSkin

Поделиться сообщением


Ссылка на сообщение

это нормально, что одностраничка 5 сек грузится?  :lol:


я знаю точно что все телки которые красивые и которые любят ебаться, разбираются в часах

Но у меня нету часов, и хуевая ауди поэтому приходится дома дрочить

Поделиться сообщением


Ссылка на сообщение

это нормально, что одностраничка 5 сек грузится?  :lol:

ох уж эти проблемы компов из 2005  :rickroll:


:buba:

ни мало ни много, а много и мало

Поделиться сообщением


Ссылка на сообщение

Я раньше думал, что топ рофлеры на работе это забавный миф. Я никогда ещё так не ошибался
Щас бы про член пошутить   :avtorklif: И все несколько человек ггыгыгыгы  :avtorklif: просто помойка, пиздец

Поделиться сообщением


Ссылка на сообщение

Осталось только непонятным.

Нахуй ты это тут написал?

MasterSanSay понравилось это

Поделиться сообщением


Ссылка на сообщение

гыыы гыыы гыыыы


Я не человек, Я - Кантона. (с)

Miraxes#2986

753357.png

Поделиться сообщением


Ссылка на сообщение
Гость
Эта тема закрыта для публикации сообщений.

×
×
  • Создать...