私はこれに苦労してきましたが、これまでのところうまくいきませんでした。ボタンを使用した単純なメインは正常に動作しますが、同じコードを単体テストに入れると失敗します。
// keygeneration_test.cpp
#define BOOST_TEST_DYN_LINK
#include <boost/test/unit_test.hpp> // shuold use this one if using dynamic linking
#include <botan\botan.h>
#include <botan\rsa.h>
BOOST_AUTO_TEST_SUITE(keygeneration_suite)
BOOST_AUTO_TEST_CASE(rsa_key_generation)
{
BOOST_TEST_MESSAGE("generating key");
try
{
Botan::LibraryInitializer init;
Botan::AutoSeeded_RNG rng;
rng.reseed(10096);
Botan::RSA_PrivateKey rsaPrivate(rng, 1024);
}
catch (std::exception& e)
{
BOOST_TEST_MESSAGE(e.what());
}
}
BOOST_AUTO_TEST_SUITE_END()
--
// main.cpp
#define BOOST_TEST_DYN_LINK
#define BOOST_TEST_MODULE cryptography test //module define should be only here, it takes care of creating entry point
#include <boost/test/unit_test.hpp> // should use this one if using dynamic linking
次に、次のようにメイン エントリ ポイントに init を配置してみました。
//main.cpp
#define BOOST_TEST_DYN_LINK // Make the exe link dynamically
#define BOOST_TEST_NO_MAIN
#include <boost/test/unit_test.hpp> // should use this one if using dynamic linking
#include <botan\botan.h>
bool init_function()
{
return true;
}
int main(int argc, char* argv[])
{
Botan::LibraryInitializer init;
return boost::unit_test::unit_test_main(&init_function, argc, argv);
}
どちらも同じエラーを示します。
1 つのテスト ケースを実行しています... 不明な場所 (0): "rsa_key_generation" で致命的なエラーが発生しました: アクセスできないデータを読み取ろうとしたときに、アドレス 0x00141000 でメモリ アクセス違反が発生しました
*** テスト スイート「cryptography test」で 1 つの障害が検出されました メモリ リークが検出されました! オブジェクトのダンプ -> {670} 0x0000000000221380 の通常ブロック、長さ 16 バイト。データ: 78 EA 13 00 00 00 00 00 00 00 00 00 00 00 00 00 オブジェクトのダンプが完了しました。
記録のために、私が試した圧縮の簡単なテストまたは私が行ったことはすべて正常に機能しますが、ボタンの初期化を使用してテストを作成しようとすると、何を試しても失敗します。
編集: Qt Test で試してみましたが、同じことが起こります。それは本当に奇妙です。誰もこのようなことを経験しましたか? 誰でもこれを再現できますか?