C++を使用してGoogleテストケースの名前を動的に設定するにはどうすればよいですか?
たとえば、ユーザーが定義したポート数のL2スイッチがあり、Googleテストですべてのポートをテストしたいとします。もちろんgtestを使用してテスト名を設定する方法
class VLAN : public ::testing::Test {};
TEST(VLAN, dot1qPortIngressFiltering_Port1_Min) {
snmp.set("Q-BRIDGE-MIB::dot1qPortIngressFiltering.1", Integer32(1));
auto result = snmp.get("Q-BRIDGE-MIB::dot1qPortIngressFiltering.1");
auto res = std::get<Integer32>(result);
ASSERT_EQ(res, Integer32(1));
}
は、私は手動で簡単に1桁を変更することで、このケースをコピー&ペーストできます。dot1qPortIngressFiltering_Port1_Min, dot1qPortIngressFiltering_Port2_Min, dot1qPortIngressFiltering_Port3_Min ...
が、私もポートの可能な数を知りません。
私は文字列として構築されたテスト名を渡そうとしましたが、TEST()
は文字列を2番目のパラメータとして受け付けていないようです。 test_info->name(), test_info->test_case_name());
でテスト名を得ることができますが、どうすれば設定できますか?
ポート数はどのようにして得られますか? – AndyG
@AndyGユーザー定義です。アプリケーションは.iniファイルを読み込み、この情報を取得します。 – Alexandr
さて、おそらく私たちはGoogleのテストマクロを使って何もすることはできません。コンパイル時にコード生成が行われ、実行時までポート数がわからないことがあります。したがって、ポートごとに個別のテストを書くことはできませんが、ポートをループできる単一のテストを書くことはできません。.iniファイルを読み込んで別のプログラムを作成し、コンパイルして後で実行します。 – AndyG