2017-12-04 16 views
0

テスト用にSeleniumを使用するUIテストスイートとフレームワークを構築しました。私のフレームワークでは、私はSetUpとTeardownを単純化するためにTestクラスに継承されたBaseTestクラスを利用しています。基本テストでは、ドライバの起動、ロガーの初期化、機能テストのためのブラウザの最大化などの作業を行います。継承されたクラス関数のGetCurrentMethod()の使用方法

私の問題は、私がロガーを初期化するときに、ロガーに名前を渡す必要があるということです。実際のテストのネームスペースと実際のテスト名を利用したいので、個々のテストのログをフィルタリングして、テストやバグの診断に役立てることができます。

[SetUp] 
public void RemoteSetUp() 
{ 
    string LoggerName = GetType().Namespace + "_" + System.Reflection.MethodBase.GetCurrentMethod(); 
    logger = LogManager.GetLogger(LoggerName); 
    DesiredCapabilities capabilities = DesiredCapabilities.InternetExplorer(); 
    capabilities.AcceptInsecureCerts = true; 
    driver = new RemoteWebDriver(new Uri("http://10.16.199.64:4444/wd/hub"), capabilities); 
    driver.Manage().Window.Maximize(); 
} 

をこれが唯一の私が正しく何をしたいの半分をやっている:

これは、私は現在、私のベースのテストがセットアップされている方法です。 LoggerNameを宣言するところでは、ベーステストの名前空間ではなくTESTの名前空間を返していますが、System.Reflection.MethodBase.GetCurrentMethod();はBASE TESTのメソッド名を返しています。これにより、LoggerNameが[TestNamespace]_[BaseTestMethodName]に等しくなります。

LoggerNameを[TestNamespace]_[TestMethodName]にするにはどうすればよいですか?

答えて

0

BaseTestの外観が不明です。基礎となるタイプを取得する方法は次のとおりです。注:Nullableでこれをテストしました。

var t = typeof(BaseTest<int>); 

if (t.GetType().IsGenericType && 
    t.GetType().GetGenericTypeDefinition() == typeof(BaseTest<>)) 
{ 
    var type = t.GetGenericArguments()[0]; 
} 
関連する問題