Де хэвилленд dh.98 «москито»
Содержание:
- Mockito: что это такое и зачем нужно
- FOREIGN
- Mosquito FB Mk.VI Nationalist Chinese Air Force 1948-1950
- Mosquito FB Mk.VI RF823 Czechoslovakian Air Force 1945-1950
- Mosquito FB Mk.VI Dominican Air Force circa 1950
- Mosquito NF Mk.XIX 30022 Swedish Air Force 1950
- Mosquito FB Mk.VI Turkish Air Force 1947-1950
- Mosquito PR.XVI 90 Israeli Defence Force Syria, 1956
- Обзор
- Stubbing methods
- BOMBER Mk.IV/FIGHTER Mk.II
- О статье
- Мокинг с помощью BDDMockito
- Модули
- mock и spy
- Benefits of Mockito
- Ссылки
Mockito: что это такое и зачем нужно
Говоря коротко, Mockito — фреймворк для работы с заглушками.
Как известно, при тестировании кода (прежде всего юнит-тестировании, но не только) тестируемому элементу часто требуется предоставить экземпляры классов, которыми он должен пользоваться при работе. При этом часто они не должны быть полнофункциональными — наоборот, от них требуется вести себя жёстко заданным образом, так, чтобы их поведение было простым и полностью предсказуемым. Они и называются заглушками (stub). Чтобы их получить, можно создавать альтернативные тестовые реализации интерфейсов, наследовать нужные классы с переопределением функционала и так далее, но всё это достаточно неудобно, избыточно и чревато ошибками. Более удобное во всех смыслах решение — специализированные фреймворки для создания заглушек. Одним из таковых (и, пожалуй, самым известным для Java) и является Mockito.
Mockito позволяет создать одной строчкой кода так называемый mock (что-то вроде основы для нужной заглушки) любого класса. Для такого mock сразу после создания характерно некое поведение по умолчанию (все методы возвращают заранее известные значения — обычно это либо ). Можно переопределить это поведение желаемым образом, проконтролировать с нужной степенью детальности обращения к ним так далее. В результате mock и становится заглушкой с требуемыми свойствами. Ниже я подробно разберу, как это сделать.
Отмечу, что mock можно создать и для тех классов, новый экземпляр которых вообще-то так просто не создашь, в частности, классов с исключительно приватными конструкторами типа синглтонов и утилитных классов, а при минимальной настройке фреймворка — и перечислений (enums).
FOREIGN
The Mosquito was operated by many diverse countries in the immediate
postwar period. Some of which are shown here.
Mosquito FB Mk.VI
Nationalist Chinese Air Force
1948-1950
China acquired over 200 Mosquitos, all were Canadian built and of
various marks including the FB.26 (Canadian-built FB.VI). They eventually
equipped three squadrons, and saw some combat in 1948/49 before the
Nationalist forces retreated to Taiwan. Finish is OD upper surfaces
and medium gray lower.
Mosquito FB Mk.VI RF823
Czechoslovakian Air Force
1945-1950
Following the end of WW2, 19 Mosquito FB.VIs were flown by the Czech
Air Force. Despite an arms embargo, No.311 Sqn managed to keep their
Mosquitos operational by using surplus German guns. During 1950 western
aircraft were phased out in favour of Soviet types, with the Mosquito
being replaced by the Il-2. Standard RAF camouflage is carried with
Czech markings.
Mosquito FB Mk.VI
Dominican Air Force
circa 1950
The Dominican Republic acquired five FB.VIs. Later supplemented by
some T.27s. Although a roundel is shown on the port undersurface, it
is more likely that the serial 2102 was carried here as it appears on
the upper starboard wing, and the roundel on the lower starboard wing
of another Mosquito.
Mosquito NF Mk.XIX 30022
Swedish Air Force
1950
Sweden bought sixty ex-RAF NF.XIX Mosquitos in 1948, and gave them
the designation J30. Upon delivery, the first, second, and third squadrons
of the F1 Wing was equipped with the type and appropriate markings were
painted on; The first squadron had white spinners and code letters,
the second squadron blue spinners and code letters, and the third squadron
yellow spinners and code letters. The letters were outlined in white,
except for the first squadron, which were outlined in black. Later the
first squadron changed from white to red for their colors, outlining
the letters in white. The J30 had a short life in the Flygvapnet, being
in front line service for only 6 years. The J30 was replaced by the
Venom, a much more powerful night-fighter.
Mosquito FB Mk.VI
Turkish Air Force
1947-1950
Turkey purchased 142 Mosquitos, of which 137 were FB.Vis. The Turkish
Air Force operated their Mosquitos until 1954.
Mosquito PR.XVI 90
Israeli Defence Force
Syria, 1956
Israel was one of the last countries to fly the Mosquito into combat,
using ex-French and Royal Navy PR. XVI Mosquitos in the Suez crisis
of 1956. While most Israeli PR Mosquitos were silver overall, a small
number of them were camouflaged in the standard sand and blue over duck
egg green. The Mosquito shown here was flown on a recce mission over
Syria in November of 1956 by Ze’ev Tavor and navigator Rafael Sivron
when it suffered some damage. While it made it back to Israel, the resultant
forced landing effectively wrote off #90.
Обзор
Термин BDD впервые был придуман Дэном Нортом еще в 2006 году.
BDD поощряет написание тестов на естественном, удобочитаемом языке, ориентированных на поведение приложения.
Он определяет четко структурированный способ написания тестов в следующих трех разделах (Arrange, Act, Assert):
- при некоторых предварительных условиях (организовать)
- когда происходит действие (действие)
- затем проверьте вывод (Assert)
Библиотека Mockito поставляется с классом BDDMockito, который представляет BDD-дружественные API. Этот API позволяет нам использовать более дружественный для BDD подход, организуя наши тесты с помощью given () и делая утверждения с помощью then () .
В этой статье мы собираемся объяснить, как настроить тесты Mockito на основе BDD. Мы также поговорим о различиях между API Mockito и BDDMockito , чтобы в конечном итоге сосредоточиться на API BDDMockito .
Stubbing methods
Subbing is defining of what values to return when we invoke methods of a mock object.
Stubbing is achieved by Mockito’s when-thenReturn methods.
Let’s see how to do stubbing for our interface :
package com.logicbig.example; import org.junit.Assert; import org.junit.Test; import org.mockito.Mockito; public class MyServiceTest2 { @Test public void testDoSomething2(){ MyService mock = Mockito.mock(MyService.class); Mockito.when(mock.doSomething()).thenReturn(10);//stubbing int i = mock.doSomething(); Assert.assertEquals(i, 10); } }
D:\mockito-getting-started-creating-mocks>mvn test -Dtest="MyServiceTest2" Scanning for projects... ----< com.logicbig.example:mockito-getting-started-creating-mocks >----- Building mockito-getting-started-creating-mocks 1.0-SNAPSHOT ----------------------------------------------------------------- --- maven-resources-plugin:2.6:resources (default-resources) @ mockito-getting-started-creating-mocks --- Using platform encoding (Cp1252 actually) to copy filtered resources, i.e. build is platform dependent! --- maven-compiler-plugin:3.8.1:compile (default-compile) @ mockito-getting-started-creating-mocks --- Nothing to compile - all classes are up to date --- maven-resources-plugin:2.6:testResources (default-testResources) @ mockito-getting-started-creating-mocks --- Using platform encoding (Cp1252 actually) to copy filtered resources, i.e. build is platform dependent! --- maven-compiler-plugin:3.8.1:testCompile (default-testCompile) @ mockito-getting-started-creating-mocks --- Nothing to compile - all classes are up to date --- maven-surefire-plugin:2.12.4:test (default-test) @ mockito-getting-started-creating-mocks ---------------------------------------------------------- T E S T S-------------------------------------------------------Running com.logicbig.example.MyServiceTest2Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.916 secResults :Tests run: 1, Failures: 0, Errors: 0, Skipped: 0 ------------------------------------------------------------------------ BUILD SUCCESS ------------------------------------------------------------------------ Total time: 4.132 s Finished at: 2020-04-17T00:10:42-05:00 ------------------------------------------------------------------------
BOMBER Mk.IV/FIGHTER Mk.II
Mosquito B Mk.IV DK333
PO Stephens/Ruskell
No.109 Sqn RAF
The first pattern carried by the Mosquitos was that seen on the other
aircraft of Bomber Command — brown/green topsides with black undersurfaces.
Aircraft codes and serials are in dull red.
Mosquito B Mk.IV DZ367
No.105 Sqn RAF
The next pattern seen on Bomber Command Mossies was gray/green upper
surfaces and sky under surfaces along with light gray codes and black
serials.
Mosquito B Mk.IV G-AGFV
During the war, Britain needed to keep in contact with neutral Sweden
for such materials as precision-machined ball bearings and machine-tool
steel. BOAC initially operated a pair of Lockheed Lodestars for this
route, but the performance of the Lodestar resulted in it only being
flown in bad weather and clouds to protect it from fighter interception.
BOAC sought a replacement, and after refusing the government’s suggestions
of Whitleys and Albermarle, the Mosquito was selected. The first BOAC
Mosquitos were B. Mk. IVs, followed by FB. Mk. VIs. With the Mosquito,
interception by the Luftwaffe was unlikely, and the lines of communication
remained open between England and Sweden. G-AGFV is seen in standard
RAF camouflage, the only additions being its civil registration and
a large red/white/blue horizontal stripe on the fuselage.
Mosquito NF Mk.II W4082
No.157 Sqn RAF
March-August 1942
The Mosquito was early on recognized as being suitable for modification
into the fighter role. As such they were fitted with four 20mm cannon
and four .303 machine guns. At the same time the need for night-fighters
was becoming apparent and the Mosquito NF Mk.II was created by mating
the F Mk.II with the Mk.IV AI (Airborne Intercept) radar — the result
being the NF Mk.II. The only external difference was the arrowhead aerial
on the nose and dipoles on the wingtips. These early Mosquitos were
finished in a special matt black paint that was supposed to lessen the
likelihood of being seen at night. Note the type A1 roundel and the
early fin flash.
Mosquito NF Mk.II (Intruder) DD712
No.23 Sqn RAF
November 1942
The desire to take the war to the enemy led to many types of aircraft
being employed in the intruder role. These aircraft roamed over Europe
at night and were directed to cause the maximum disruption to the enemy’s
lines of communications as possible. One favoured tactic was to wait
in the vicinity of a German airfield and shoot down any returning aircraft
careless enough to think it was safely at home. The NF.IIs employed
on this function had their radar removed. . and were to all intents
and purposes standard F Mk.IIs. DD712 shows the next step in NF markings.
. the roundel is now type C1, while the fin flash has had its white
centre stripe reduced in width.
Mosquito NF Mk.II (Intruder) DZ716
No.605 Sqn
For night-fighters, matte black finish was found to less helpful in
concealment at night, Therefore most were refinished in an overall gray
with green disruptive camouflage. However as the NF Mk.II (Intruder)
was still operating in an environment where searchlights were a real
danger, many kept their black bottom surfaces, even after adding the
gray/green uppers.
О статье
Перед вами очередное руководство по Mockito. В нём я, с одной стороны, попытался описать функционал этой библиотеки так, чтобы незнакомый с нею читатель сразу получил возможность полноценно ею пользоваться, а не только общее представление о ней. С другой — я хотел сделать его достаточно компактным и структурированным, чтобы можно было быстро прочесть его целиком и быстро найти в нём что-то единожды прочитанное, но подзабытое. В общем, эта такая статья, какая бы пригодилась мне самому, когда я только столкнулся с этой библиотекой и не очень понимал, как она работает.
Полагаю, она и сейчас может пригодиться мне же — иногда я забываю что-то из этого, а вспоминать материал удобнее всего не по официальной документации или чужим статьям, а по собственному, скажем так, конспекту. Вместе с тем я старался построить текст так, чтобы он был удобен прежде всего для знакомства с Mockito с нуля, и кое-где подробно разбираю вроде бы очевидные вещи — не все из которых были для меня очевидными с самого начала.
Мокинг с помощью BDDMockito
Давайте попробуем протестировать PhoneBookService, где нам нужно будет смоделировать PhoneBookRepository:
BDDMockito как Mockito позволяет нам возвращать значение, которое может быть фиксированным или динамическим. Это также позволит нам выбросить исключение:
4.1. Возврат фиксированной стоимости
Используя BDDMockito, мы могли бы легко настроить Mockito для возврата фиксированного результата всякий раз, когда вызывается наш целевой метод фиктивного объекта:
4.2. Возврат динамического значения
BDDMockito позволяет нам предоставлять более изощренный способ возврата значений. Мы можем вернуть динамический результат на основе ввода:
4.3. Выброс исключения
Сказать Mockito создать исключение довольно просто:
Обратите внимание на то, как мы поменяли местами значения given и will * , что обязательно, если мы имитируем метод, который не имеет возвращаемого значения. Также обратите внимание, что мы использовали сопоставители аргументов, такие как ( any , eq ), чтобы предоставить более общий способ насмешки, основанный на критериях, а не на фиксированном значении
Также обратите внимание, что мы использовали сопоставители аргументов, такие как ( any , eq ), чтобы предоставить более общий способ насмешки, основанный на критериях, а не на фиксированном значении
Модули
- Таблица
- Дерево
Двигатель
Уровень | Двигатель | Мощность двигателя, л.с. / Тяга | Тип | Масса, кг | Стоимость, |
---|---|---|---|---|---|
VII | NAME_MODULE_MERLIN-225_PR_SPEC_TOP_MOSQUITO-MK26_1 | 1620 | водяного охлаждения | 1500 | 80000 |
Конструкция
Уровень | Конструкция | Живучесть | Масса, кг | Стоимость, |
---|---|---|---|---|
VI | NAME_MODULE_MOSQUITO-MK26_PLANER-PR_SPEC_TOP_MOSQUITO-MK26_1 | 400 | 6400 | 60000 |
Фюзеляжное вооружение
Уровень | Пулемёт | Калибр | Начальная скорость снаряда, м/с | Урон | Скорострельность, выстр/мин | Масса, кг | Стоимость, |
---|---|---|---|---|---|---|---|
VI | 20-мм Hispano Mk.II (Ф) | 20 | 1360 | 90 | 400 | 90 | 37300 |
Фюзеляжное вооружение
Уровень | Пулемёт | Калибр | Начальная скорость снаряда, м/с | Урон | Скорострельность, выстр/мин | Масса, кг | Стоимость, |
---|---|---|---|---|---|---|---|
IV | WEAPON_NAME_G7MM-BROWNING-MK-2-CH-PR-F_SPEC_TOP_MOSQUITO-MK26_1 | 7.7 | 960 | 25 | 600 | 30 | 4500 |
Подвесное вооружение
Уровень | Бомбы | Радиус поражения, м | Урон | Масса, кг | Стоимость, |
---|---|---|---|---|---|
VI | WEAPON_NAME_500LB-CH-PR_SPEC_TOP_MOSQUITO-MK26_1 | 75 | 4300 | 227 | 1150 |
Подвесное вооружение
Уровень | Ракеты | Радиус поражения, м | Урон | Масса, кг | Стоимость, |
---|---|---|---|---|---|
VI | RP-3 SAP | 35 | 1000 | 37 | 500 |
Двигатель
VII
ДвигательNAME_MODULE_MERLIN-225_PR_SPEC_TOP_MOSQUITO-MK26_1
Характеристики: | |
Мощность двигателя, л.с. | 1620 |
Тип | водяного охлаждения |
Масса, кг | 1500 |
Применяемость:De Havilland 98 Mosquito FB 26
VII
2xNAME_MODULE_MERLIN-225_PR_SPEC_TOP_MOSQUITO-MK26_1
VII
ДвигательMerlin 225
Характеристики: | |
Мощность двигателя, л.с. | 1620 |
Тип | водяного охлаждения |
Масса, кг | 1500 |
Применяемость:De Havilland 98 Mosquito FB 26
VII
2xMerlin 225
Конструкция
VI
КонструкцияNAME_MODULE_MOSQUITO-MK26_PLANER-PR_SPEC_TOP_MOSQUITO-MK26_1
Характеристики: | |
Живучесть | 400 |
Масса, кг | 6400 |
Применяемость:De Havilland 98 Mosquito FB 26
VI
NAME_MODULE_MOSQUITO-MK26_PLANER-PR_SPEC_TOP_MOSQUITO-MK26_1
VI
КонструкцияMosquito FB 26
Характеристики: | |
Живучесть | 400 |
Масса, кг | 6400 |
Применяемость:De Havilland 98 Mosquito FB 26
VI
Mosquito FB 26
Фюзеляжное вооружение
VI
Пулемёт20-мм Hispano Mk.II (Ф)
Характеристики: | |
Калибр | 20 |
Начальная скорость снаряда, м/с | 1360 |
Урон | 90 |
Скорострельность, выстр/мин | 400 |
Масса, кг | 90 |
Применяемость:De Havilland 98 Mosquito FB 26
VI
4×20-мм Hispano Mk.II (Ф)
VI
Пулемёт
Характеристики: | |
Калибр | 20 |
Начальная скорость снаряда, м/с | 1360 |
Урон | 90 |
Скорострельность, выстр/мин | 400 |
Масса, кг | 90 |
Стоимость: | |
Стоимость покупки | 37300 |
Применяемость:De Havilland 98 Mosquito FB 26
VI
4x
Фюзеляжное вооружение
IV
Пулемёт.303 Browning Mk.II (Ф)
Характеристики: | |
Калибр | 7.7 |
Начальная скорость снаряда, м/с | 960 |
Урон | 25 |
Скорострельность, выстр/мин | 600 |
Масса, кг | 30 |
Применяемость:De Havilland 98 Mosquito FB 26
IV
4x.303 Browning Mk.II (Ф)
IV
ПулемётWEAPON_NAME_G7MM-BROWNING-MK-2-CH-PR-F_SPEC_TOP_MOSQUITO-MK26_1
Характеристики: | |
Калибр | 7.7 |
Начальная скорость снаряда, м/с | 960 |
Урон | 25 |
Скорострельность, выстр/мин | 600 |
Масса, кг | 30 |
Стоимость: | |
Стоимость покупки | 4500 |
Применяемость:De Havilland 98 Mosquito FB 26
IV
4xWEAPON_NAME_G7MM-BROWNING-MK-2-CH-PR-F_SPEC_TOP_MOSQUITO-MK26_1
Подвесное вооружение
Вооружение отсутствует
VI
Бомбы500 фн.
Характеристики: | |
Радиус поражения, м | 75 |
Урон | 4300 |
Масса, кг | 227 |
Стоимость: | |
Стоимость покупки | 1150 |
Применяемость:De Havilland 98 Mosquito FB 26
VI
2×500 фн.
VI
БомбыWEAPON_NAME_500LB-CH-PR_SPEC_TOP_MOSQUITO-MK26_1
Характеристики: | |
Радиус поражения, м | 75 |
Урон | 4300 |
Масса, кг | 227 |
Стоимость: | |
Стоимость покупки | 1150 |
Применяемость:De Havilland 98 Mosquito FB 26
VI
2xWEAPON_NAME_500LB-CH-PR_SPEC_TOP_MOSQUITO-MK26_1
Вооружение отсутствует
Подвесное вооружение
Вооружение отсутствует
VI
РакетыRP-3 SAP
Характеристики: | |
Радиус поражения, м | 35 |
Урон | 1000 |
Масса, кг | 37 |
Стоимость: | |
Стоимость покупки | 500 |
Применяемость:De Havilland 98 Mosquito FB 26
VI
8xRP-3 SAP
VI
Ракеты
Характеристики: | |
Радиус поражения, м | 35 |
Урон | 1000 |
Масса, кг | 37 |
Стоимость: | |
Стоимость покупки | 500 |
Применяемость:De Havilland 98 Mosquito FB 26
VI
8x
Вооружение отсутствует
Вооружение отсутствует
Премиумный самолет
Подарочный самолет
mock и spy
Центральный класс Mockito, через который предполагается обращаться к большей части функционала, — это, собственно, класс под названием (есть также класс , предоставляющий примерно те же возможности в форме, более подходящей для BDD, но здесь я не стану на нём останавливаться). Доступ к функционалу реализован через его статические методы.
Чтобы создать mock класса , я должен сделать всего лишь следующее:
Готово — я получил экземпляр нужного мне класса. Он будет принят любым методом или конструктором, которому требуется параметр такого типа (например, конструктором того класса, который я хочу протестировать). Даже если далее его ожидает проверка с пристрастием, он её пройдёт: не только вернёт , но и — именно . Каким-то формальным образом программно отличить mock-объект от обычного оказывается довольно непростой задачей, что и логично: ведь первый предназначен как раз для того, чтобы быть неотличимым от второго. Однако в составе Mockito для этого есть инструмент — метод . Передав ему произвольный объект, я получу объект класса . Он содержит информацию о том, что этот объект представляет собой с точки зрения Mockito: является ли он mock, spy (см. ниже), как использовался, как был создан и прочее.
Особо нужно упомянуть ситуацию, когда я пытаюсь создать mock для final класса или mock-экземпляр enum либо переопределить поведение final метода. В таком случае при поведении Mockito по умолчанию код выше откажется работать, сославшись именно на это обстоятельство. Однако это можно изменить — достаточно создать в проекте (при стандартном устройстве проектного дерева каталогов) файл и вписать в него строчку:
После этого можно имитировать обычным способом final классы и enum’ы, а также переопределять final методы.
Полученный мной mock в действии максимально безлик: ни один метод при вызове не окажет никакого воздействия на что бы то ни было, а возвращённое значение окажется для объектных типов и для примитивных
Обратите внимание: если метод возвращает коллекцию, mock’ом по умолчанию будут возвращены не ‘ы, а пустые экземпляры коллекций. Например, для это окажется пустой независимо от того, что должен был возвращать реальный метод
А вот в качестве значений массивов, примитивных или объектных, я получу . Поведение по умолчанию (и не только его) можно изменить при помощи функционала класса , но это нечасто бывает нужно.
Так или иначе, в большинстве случаев мне понадобится не поведение по умолчанию, и в следующем разделе я подробно разберу, как задавать вместо него то, которое требуется.
Однако что, если я хочу использовать в качестве заглушки объект реального класса с имеющимся функционалом, переопределив работу только части его методов? Если речь о юнит-тестировании, такая потребность обычно (но не всегда) свидетельствует о том, что в проекте не всё в порядке с дизайном, и в принципе так действовать не рекомендуется. Однако случаются ситуации, когда этого по какой-то причине не избежать. На этот случай в Mockito есть так называемые spy, «шпионы». В отличие от mock’ов, их можно создавать на основе как класса, так и готового объекта:
При создании spy на основе класса, если его тип — интерфейс, будет создан обычный mock-объект, а если тип — класс, то Mockito попытается создать экземпляр при помощи конструктора по умолчанию (без параметров). И только если такого конструктора нет, произойдёт ошибка и тест не сработает.
Поведение spy-объектов по умолчанию идентично поведению обычного экземпляра класса, однако они дают мне те же возможности, что и mock-объекты: позволяют переопределять их поведение и наблюдать за их использованием (см. следующие разделы). Важный момент: spy — не обёртка вокруг того экземпляра, на основе которого он создан! Поэтому вызов метода spy на состояние изначального экземпляра не повлияет.
Benefits of Mockito
-
No Handwriting − No need to write mock objects on your own.
-
Refactoring Safe − Renaming interface method names or reordering parameters will not break the test code as Mocks are created at runtime.
-
Return value support − Supports return values.
-
Exception support − Supports exceptions.
-
Order check support − Supports check on order of method calls.
-
Annotation support − Supports creating mocks using annotation.
Consider the following code snippet.
package com.tutorialspoint.mock; import java.util.ArrayList; import java.util.List; import static org.mockito.Mockito.*; public class PortfolioTester { public static void main(String[] args){ //Create a portfolio object which is to be tested Portfolio portfolio = new Portfolio(); //Creates a list of stocks to be added to the portfolio List<Stock> stocks = new ArrayList<Stock>(); Stock googleStock = new Stock("1","Google", 10); Stock microsoftStock = new Stock("2","Microsoft",100); stocks.add(googleStock); stocks.add(microsoftStock); //Create the mock object of stock service StockService stockServiceMock = mock(StockService.class); // mock the behavior of stock service to return the value of various stocks when(stockServiceMock.getPrice(googleStock)).thenReturn(50.00); when(stockServiceMock.getPrice(microsoftStock)).thenReturn(1000.00); //add stocks to the portfolio portfolio.setStocks(stocks); //set the stockService to the portfolio portfolio.setStockService(stockServiceMock); double marketValue = portfolio.getMarketValue(); //verify the market value to be //10*50.00 + 100* 1000.00 = 500.00 + 100000.00 = 100500 System.out.println("Market value of the portfolio: "+ marketValue); } }
Let’s understand the important concepts of the above program. The complete code is available in the chapter First Application.
-
Portfolio − An object to carry a list of stocks and to get the market value computed using stock prices and stock quantity.
-
Stock − An object to carry the details of a stock such as its id, name, quantity, etc.
-
StockService − A stock service returns the current price of a stock.
-
mock(…) − Mockito created a mock of stock service.
-
when(…).thenReturn(…) − Mock implementation of getPrice method of stockService interface. For googleStock, return 50.00 as price.
-
portfolio.setStocks(…) − The portfolio now contains a list of two stocks.
-
portfolio.setStockService(…) − Assigns the stockService Mock object to the portfolio.
-
portfolio.getMarketValue() − The portfolio returns the market value based on its stocks using the mock stock service.
Ссылки
- Ресурсы World of Warplanes
- Энциклопедия
- Тема на официальном форуме
Великобритания
Истребители | IIBristol Bulldog • IIIBristol Type 133 • IIIHawker P.V.3 • IIISupermarine Type 224 • IVBristol Type 146 • IVFairey Fantome • IVHawker Hurricane Mk. Ia • VCAC CA-12 Boomerang • VMiles M.20 • VSupermarine Spitfire I • VSupermarine Spitfire Mk Ia • VVickers Venom • VINorth American Mustang Mk.I • VINorth American Mustang IA • VISupermarine Spitfire V • VISupermarine Spitfire Vb IM • VIIGloster Meteor F. I • VIISupermarine Spitfire IX • VIIISupermarine Spitfire XIV • VIIIDe Havilland DH.100 Vampire F.1 • IXSupermarine Attacker • XSupermarine Swift |
Тяжёлые истребители | IVBristol Blenheim F • VBristol Beaufighter • VIDe Havilland 98 Mosquito • VIIDe Havilland 103 Hornet • VIIIWestland P.1056 • IXGloster P.228 • XGloster Javelin |
Многоцелевые истребители | IGloster Goldfinch • IIHawker Demon • IIIBlackburn Skua • IVHawker Hurricane Mk I • VHawker Hurricane Mk II • VHawker Hurricane IID • VIHawker Tornado • VIIHawker Typhoon • VIIISupermarine Seafang F.32 • VIIIHawker Tempest • IXHawker Sea Hawk • XHawker Hunter |
Штурмовики | IIICAC CA-1 Wirraway |
Бомбардировщики | IIIBristol Blenheim Mk.IV (ранний) |
Тяжёлые истребители
СССР | VIIТуполев Ту-1 |
Германия | IIAGO Ao 192 Kurier • IIIDornier Do 17 Z-7 Kauz • IIIFocke-Wulf Fw 57 • IIIJunkers Ju 52 • IVMesserschmitt Bf 110 B • IVMesserschmitt Bf 110 C-6 • VMesserschmitt Bf 110 E • VMesserschmitt Me 210 • VIMesserschmitt Me 410 Hornisse • VIIMesserschmitt Bf 109 Z Zwilling • VIIIBlohm und Voss BV P.203 • VIIIDornier Do 335 A-1 Pfeil • VIIIMesserschmitt Me 262 Schwalbe • IXMesserschmitt Me 262 HG II • XMesserschmitt Me 262 HG III |
Великобритания | IVBristol Blenheim F • VBristol Beaufighter • VIDe Havilland 98 Mosquito • VIIDe Havilland 103 Hornet • VIIIWestland P.1056 • IXGloster P.228 • XGloster Javelin |
США | VLockheed P-38F Lightning • VILockheed P-38J Lightning • VIGrumman XP-50 • VIIGrumman F7F Tigercat • VIIFisher XP-75 Eagle • VIIIChance-Vought XF5U Pancake • VIIINorth American P-82B Twin Mustang • VIIILockheed XP-58 Chain Lightning • IXMcDonnell F2H Banshee • XLockheed XF-90 |
Япония | VKawasaki Ki-45 Toryu • VIKawasaki Ki-102 • VIIRikugun Ki-93 • VIITachikawa Ki-94-I |
Китай | VIDe Havilland 98 Mosquito FB 26 |
Франция | VSNCASE SE 100 • VIIArsenal VB 10 |