Вам нужно будет создать «конвейер сборки». Определенно лучший способ управления пакетами 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-файл следующим образом:
Примечание: это всего лишь предложение, есть много способов автоматически включить связанный файл в html, например с веб-пакетом и его html-webpack-plugin
То, что мы получили до сих пор, - это просто «конвейер сборки», то, что нужно сделать дальше, - это запланировать развертывание. Для этого вам нужно будет настроить веб-сервер и настроить его для обслуживания связанного файла. Например, если ваш домен www.domain.com, вам нужно настроить веб-сервер, чтобы найти www.domain.com/bundle.js (как указано в html-файле).
Параллелизм является одной из тех вещей, которые являются очень трудными к модульному тесту. Если Вы просто пытаетесь протестировать это, код в каждом потоке делает то, что он, как предполагается, тестирует, можете быть Вы, должен просто протестировать этот код, изолированный контекста. Если в этом примере потоки сотрудничают для достижения результата, можете быть Вы, может протестировать то сотрудничество, не используя потоки. Это было бы сделано путем выполнения всех совместных частей последовательно. Если Вы хотите протестировать на условия состязания и подобные вещи, поблочное тестирование не является лучшим способом. Вы получите тесты, которые иногда перестали работать и иногда не перестали работать. Подводя итоги, я думаю, что это может быть Вашей проблемой, то, что Вы - поблочное тестирование на уровне слишком высоко.Надеюсь, это поможет
Google Testing Blog имел превосходную статью об этом предмете, который это определенно стоит считать: http://googletesting.blogspot.com/2008/08/tott-sleeping-synchronization.html
Это записано в Python, но я думаю, что принципы непосредственно передаваемы к Java.
Поблочное тестирование в многопоточной среде жестко..., таким образом, некоторые корректировки должны быть внесены. Модульные тесты должны быть повторяемыми.. детерминированный. В результате что-либо с несколькими потоками приводит это к сбою критерии. Тесты с несколькими потоками также имеют тенденцию быть медленными.
Эй кажется, что существует другой вопрос точно так же, как это. Проверьте мое сообщение на ссылку на более длительное обсуждение в tdd yahoogroup Поблочное тестирование многопоточное приложение?
Ваша выполнимая обертка должна пасовать назад объект исключения к Вашему тестовому классу, и затем можно сохранить их в наборе. Когда все тесты являются концом, можно протестировать набор. Если это не пусто, выполните итерации по каждому из исключений, и .printStackTrace () затем перестали работать.
Реализуйте UncaughtExceptionHandler, который устанавливает некоторые флаги (который Потоки peridocially проверяют), и установите его на каждом Потоке.