私は(Seleniumテスト用)並行して、私のテストを実行するには、次のセットアップを持っている:MSTestでテスト実行中に非テストメソッドをテストとして追加するにはどうすればよいですか?
[TestClass]
public class ParallelTests
{
[TestMethod]
public void TestAllParallel()
{
var testActions = Assembly.GetExecutingAssembly().GetTypes()
.Where(t =>
t.GetCustomAttribute<CompilerGeneratedAttribute>() == null &&
t.GetCustomAttribute<TestClassAttribute>() != null)
.Select(t => new Action(() => RunTest(t)))
.ToArray();
System.Threading.Tasks.Parallel.Invoke(testActions);
}
private static void RunTest(Type test)
{
var instance = Activator.CreateInstance(test);
ExecuteTestMethods(instance);
}
private static void ExecuteTestMethods(object instance)
{
var testMethods = instance.GetType().GetMethods()
.Where(m =>
m.GetCustomAttribute<TestMethodAttribute>(false) != null &&
m.GetCustomAttribute<IgnoreAttribute>(false) == null)
.ToArray();
foreach (var methodInfo in testMethods)
{
methodInfo.Invoke(instance, null);;
}
}
}
私ジェンキンスサーバーでのテスト結果のレポートが一つだけのテストが実行されたことを示しているがこれは正常に動作します。報告書には、TestAllParallel()
によって実行されたすべてのテストが表示されます。
これは可能ですか?私はおそらく、実行時にMSTestにテストとしてメソッドを追加することが可能であると考えています。
私はmstestが実行時にテストを追加する方法がないと思います。テスト用の別のtrxファイルを作成して(メソッドにファイルを生成する)、JenkinsのmstestプラグインはMSTestから出力されたと考えられます。 –
テストされているコードではなく、テストコード自体のコードカバレッジを確認しようとする可能性があります。私はジェンキンズ&mstestでそれを行う方法がわかりませんが。 –
なぜあなた自身のテストをすべて実行し、ジェンキンスのサーバーにあなたのためのテストを指示していないのですか? – silver