14

JUnit (またはその他の単体テスト フレームワーク) テストを実行できるように、ある種のエミュレート/シミュレートされた環境でJava Cardアプリケーションを実行したいと考えています。そのようなツールを知っている人はいますか?私はいくつかのオープンソースプロジェクトを好むでしょう。

4

4 に答える 4

12

この目的のために、私たちのチームは jCardSim を開発しました: オープンソースの 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

本物の NXP チップ JavaCard を完全にエミュレートします。使ってみてください。コメントやアイデアは大歓迎です!プロジェクトへのリンクを共有していただければ幸いです。

于 2012-04-23T13:24:39.280 に答える
1

これを行う 1 つの方法は、Java SE で JUnit テストを作成し、APDU を使用して Java Card のクラスと通信することです。明らかに、これは Java Card でクラスを直接テストすることと同じではありませんが、物乞いは選択者になることはできません。一般に、何らかの変換を行うアプレットを作成する必要があります。これは、Mikhail からの jCardSim の回答で使用されている方法です。もちろん、実際のカードでも使用できますが、コード カバレッジが失われ、デバッグ オプションが失われる可能性があります。

別の方法 (独自の実用的なソリューションがあります) は、カードに単体テストを実装し、Java SE の JUnit テスト フレームワークからそれらを呼び出すことです。これは大変な作業です。これを機能させるには、独自のList実装を生成する必要がありました。しかし、それだけの価値はありました。Java Card 内から Java Card で定義されたオブジェクトと型を使用できます。私の知る限り、これに代わるオープンソースはありません。

アプレットのコンパイル中に完全な JRE を使用できるため、JUnit テスト フレームワークを jCardSim に追加してクラスを直接テストすることもできます。jCardSim はまだ完全に機能する Java Card ではないことに注意してください (たとえば、API で指定されたメモリのリセットがない、トランザクション サポートがないなど)。そのため、Java Card 固有のコードをテストするときはこの点に注意してください。

于 2013-08-23T11:17:47.603 に答える
0

Java Cardはわかりませんが、一見すると、他のJavaMEプラットフォームとそれほど変わらないように見えます(異なるとは、たとえばJ2SEと比較することを意味します)。そのため、 Eclipse / Netbeansを使用した通常のJUnitテスト環境を使用して、開発を少し簡単にすることができます。プラットフォーム固有のものをモックするには、 powermockが必要になる場合があります。お役に立てれば。

Netbeansのヒント:テスト用に別のプロジェクトを検討することもできます(アプリケーションプロジェクトによって異なります)。その場合、最新のJavaおもちゃの力でUTをコーディングすることができます。

于 2010-11-29T17:40:40.593 に答える
0

Java カード アプレットは、単純な Java コードです。だから、JUnitは大丈夫です。通常の Java クラスをテストするようにテストしてください。

しかし問題は、javacard.* および javacardx.* パッケージ内のクラスの Java 実装を見たことがないことです。あなたがそれらを手に入れるなら - 問題は解決されます。

アプレット自体の動作 (APDU 送受信) をテストする場合は、Java Card SDK に cref.exe があります。これは javacard エミュレーターです。

于 2011-04-01T11:11:03.800 に答える