私はユニットテストのためにGoogleテストでC++で作業しています。私たちの会社のコードでは、システムのデータ型は、例えば、実際のシステムのタイムゾーン(例えば、プロダクションコードのようにCTimeデータ型を使用します)を使用します。単体テストでは、さまざまなタイムゾーンをシミュレートする必要があります。そのためには、多くの問題があります。C++:googleテストを使用してユニットテストで異なるタイムゾーンをシミュレートする方法
私はすでに他の企業がこの問題を抱えていないため、他の人たちがどのようにして研究しているかについて研究しています:)しかし、私はその解決策を見いだせませんでした。 私の考えは次のようなものです: CTime自体は時刻をUTCで保存し、オンデマンドで現地時間に変換します。私の仮定は、これらすべての関数は、timezonapi.hで宣言されているGetTimeZoneInformation()関数が必要であるということです。
WINBASEAPI
_Success_(return != TIME_ZONE_ID_INVALID)
DWORD
WINAPI
GetTimeZoneInformation(_Out_ LPTIME_ZONE_INFORMATION lpTimeZoneInformation);
だから、解決策は、多分、私はオンデマンドで変更することができますオブジェクトを返しカスタマイズ機能によって、このGetTimeZoneInformation()の機能を交換することです。しかし、私はそれを行う方法がわかりませんし、アプリケーションが起動したときにこの関数を1回しか呼び出すことがないため、これが動作しているかどうかもわかりません。
誰もこのトピックに対処する方法を知っていますか?私は行動を変えたいとは思っていません。時間計算の仕組みを壊すことなく自分のタイムゾーンを設定できるようにしたいだけです。最善のことは、もし私が何とかそれらの呼び出しを模倣することができ、そのための生産コードを変更することであろう。 このプログラムは非常に大きく、古いものです...できるだけ少なく変更することは常に最高です:)
私の問題を解決した既存の投稿が見つからない場合は、本当に申し訳ありませんが、私はそれを見つけられなかったか、または私はこれが私を助けることができなかったからです。
あなたが望むように見えます私たちはあなたのためにいくつかのコードを書いています。多くのユーザーは、苦労しているコーダーのコードを作成したいと考えていますが、通常は、ポスターがすでに問題を解決しようとしているときにのみ役立ちます。この努力を実証する良い方法は、これまでに書いたコード、サンプル入力(もしあれば)、予想される出力、実際に得られる出力(コンソール出力、トレースバックなど)を含めることです。あなたが提供する詳細があれば、受け取る可能性の高い回答が増えます。 [FAQ]と[ask]を確認してください。 –