Как утверждать, что путь выполнения не выполняется более одного раза в Java?

1

Я делаю предположение, что кодовый путь выполняется только один раз в JVM. Однако при написании сложной многопоточной системы иногда предположение может быть ошибочным.

Есть ли какое-то одно утверждение линейки, которое я могу использовать, чтобы утверждать это. Что-то вроде Guava Preconditions.checkState(expr) но больше похоже на assertAtMostTimes(1, "Should not be executing more than once"). Предпочитайте что-то простое, а не отслеживание количества раз в переменной класса.

Это похоже на то, как можно записать тестовые примеры, но я ищу что-то в производственном коде.

  • 0
    Для производства или для проверки ?
  • 0
    @ user2864740 Рабочий код - во время выполнения во время выполнения (фактическое использование приложения. Что-то вроде того, как мы можем включить утверждение Java во время выполнения, чтобы проверить «неправильные предположения во время выполнения»).
Теги:

1 ответ

1

Проверьте инструмент покрытия кода JaCoCo. Он имеет возможность просматривать коды кода, и он подсчитывает, сколько раз они выполняются. Его нетривиально легко настроить, но он должен делать то, что вы хотите.

  • 0
    Мне нужно что-то, что может проверять утверждения во время выполнения во время жизненного цикла приложения (очень похоже на то, как я могу включить утверждение Java во время выполнения). Отчеты о покрытии тестового кода не применимы в этом случае. Цените усилия, чтобы помочь. ;-)
  • 0
    @kctang Jacoco способен присоединяться во время выполнения. По сути, вы помещаете его в путь к классам Tomcat и начинаете выполнять код для Tomcat, и он генерирует отчеты об использовании на основе этого кода и продолжает делать это до тех пор, пока вы не завершите работу с Tomcat (есть способ получить отчет из Tomcat, пока он работает) ). Я знаю, что его режим по умолчанию - показывать покрытие модульных тестов, но я говорю о дополнительном режиме, в котором он может работать. Надеюсь, это поможет!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню