Как я выполняю Модульный тест с помощью потоков? [дубликат]

Вам нужно будет создать «конвейер сборки». Определенно лучший способ управления пакетами npm - npm, поэтому ваш проект должен включать package.json вместе с другими файлами проекта.

В этом «конвейере сборки», для того, чтобы собрать весь ваш проект (например, если вы используете Makefile или другой инструмент для сборки), сначала вам нужно собрать клиент (javascript). У вас должен быть файл main.js, чтобы начать связывать ваше приложение. Этот файл будет выглядеть следующим образом:

const pbro = require('physical-barcode-reader-observer');
const anotherModule = require('./local_module.js');
...

Как вы можете видеть, внутри этого основного файла нам требуются все необходимые нам модули, поэтому любой инструмент связывания (например, Browserify или webpack) знает, какой файл является точка входа в приложение. Например, browserify docs sais:

browserify main.js -o bundle.js

Тогда все модули будут объединены в один файл, в данном случае bundle.js.

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


    
          
    

    

5 ответов

Параллелизм является одной из тех вещей, которые являются очень трудными к модульному тесту. Если Вы просто пытаетесь протестировать это, код в каждом потоке делает то, что он, как предполагается, тестирует, можете быть Вы, должен просто протестировать этот код, изолированный контекста. Если в этом примере потоки сотрудничают для достижения результата, можете быть Вы, может протестировать то сотрудничество, не используя потоки. Это было бы сделано путем выполнения всех совместных частей последовательно. Если Вы хотите протестировать на условия состязания и подобные вещи, поблочное тестирование не является лучшим способом. Вы получите тесты, которые иногда перестали работать и иногда не перестали работать. Подводя итоги, я думаю, что это может быть Вашей проблемой, то, что Вы - поблочное тестирование на уровне слишком высоко.Надеюсь, это поможет

8
ответ дан 3 December 2019 в 07:14
поделиться

Google Testing Blog имел превосходную статью об этом предмете, который это определенно стоит считать: http://googletesting.blogspot.com/2008/08/tott-sleeping-synchronization.html

Это записано в Python, но я думаю, что принципы непосредственно передаваемы к Java.

5
ответ дан 3 December 2019 в 07:14
поделиться

Поблочное тестирование в многопоточной среде жестко..., таким образом, некоторые корректировки должны быть внесены. Модульные тесты должны быть повторяемыми.. детерминированный. В результате что-либо с несколькими потоками приводит это к сбою критерии. Тесты с несколькими потоками также имеют тенденцию быть медленными.

  • Я или попытался бы видеть, могу ли я обойтись тестированием на единственном потоке.. делает логику под тестом, действительно нуждаются в нескольких потоках.
  • Если это не работает, пойдите с членским подходом переменной, который можно проверить по математическому ожиданию в конце теста, когда все потоки закончили работать.

Эй кажется, что существует другой вопрос точно так же, как это. Проверьте мое сообщение на ссылку на более длительное обсуждение в tdd yahoogroup Поблочное тестирование многопоточное приложение?

2
ответ дан 3 December 2019 в 07:14
поделиться

Ваша выполнимая обертка должна пасовать назад объект исключения к Вашему тестовому классу, и затем можно сохранить их в наборе. Когда все тесты являются концом, можно протестировать набор. Если это не пусто, выполните итерации по каждому из исключений, и .printStackTrace () затем перестали работать.

1
ответ дан 3 December 2019 в 07:14
поделиться

Реализуйте UncaughtExceptionHandler, который устанавливает некоторые флаги (который Потоки peridocially проверяют), и установите его на каждом Потоке.

1
ответ дан 3 December 2019 в 07:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: