Тестирование модуля Java Card
Я хотел бы запускать приложения
Ответы
Ответ 1
Специально для этой цели наша команда разработала jCardSim: open-source JavaCard Simulator - http://code.google.com/p/jcardsim/.
//1. create simulator
Simulator simulator = new Simulator();
//2. install applet
simulator.installApplet(appletAID, HelloWorldApplet.class);
//3. select applet
simulator.selectApplet(appletAID);
//4. send apdu
ResponseAPDU response = simulator.transmitCommand(new CommandAPDU(0x01, 0x01, 0x00, 0x00));
//5. check response
assertEquals(0x9000, response.getSW());
Пример блока: http://code.google.com/p/jcardsim/source/browse/trunk/src/test/java/com/licel/jcardsim/base/SimulatorTest.java
Он полностью эмулирует настоящую NCR-чип-карту JavaCard. Попробуйте использовать его.
Любые комментарии и идеи приветствуются! Мы будем благодарны, если вы поделитесь ссылкой на проект!
Ответ 2
Обратите внимание, что один из способов сделать это - создать тесты JUnit в Java SE и использовать APDU для связи с классами на Java-карте. Очевидно, это не то же самое, что непосредственно тестировать классы в Java Card, но нищие не могут быть выборами. В общем, вам нужно будет создать апплет, который сделает некоторые преобразования для вас. Это метод, который используется в ответе jCardSim от Михаила - его, конечно, можно было бы использовать и на реальной карте, но вы потеряли бы покрытие кода и, возможно, - варианты отладки.
Другим методом (для которого я получил собственное рабочее решение) является выполнение модульных тестов на карте и их вызов из тестовой среды JUnit с Java SE. Это много работы; Для этого мне пришлось создать собственную реализацию List
. Это стоило того; он позволяет использовать Java-карты определенных объектов и типов изнутри Java-карты. Насколько мне известно, альтернативы с открытым исходным кодом для этого нет.
Это может быть возможность добавить среду JUnit для jCardSim и непосредственно тестировать классы, так как полная JRE доступна во время компиляции апплета. Обратите внимание, что jCardSim пока не является полностью работоспособной Java-картой (например, нет reset памяти, указанной в API, без поддержки транзакций и т.д.), Поэтому имейте это в виду при тестировании кода Java Card.
Ответ 3
Не знаю Java-карты, однако, на первый взгляд, она не сильно отличается от любых других платформ JavaME (другими словами, я сравниваю их с J2SE). Таким образом, вы можете использовать любые обычные, например, JUnit тестовая среда с Eclipse/Netbeans, чтобы сделать разработку немного проще. Вам может понадобиться powermock, чтобы высмеять некоторые специфические для платформы вещи. Надеюсь, это поможет.
Один совет для Netbeans: вы можете рассмотреть отдельный проект для тестов (который зависит от вашего проекта приложения). В этом случае вы можете кодировать UT с помощью новейших Java-игрушек.
Ответ 4
Java-апплеты Java - это простые фрагменты кода Java. Итак, Юнит в порядке. Проверьте их, как вы тестируете обычные классы Java.
Но проблема в том, что я никогда не видел java-реализации классов в javacard. * и javacardx. * пакетах. Если вы их получите - проблема решена.
Если вы хотите проверить, как работает апплет (APDU send/receive), то в SDK карты Java есть cref.exe. Это javacard эмулятор.