您最多选择25个主题
主题必须以中文或者字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符
37 行
1.3 KiB
37 行
1.3 KiB
using System;
|
|
using System.Collections.Generic;
|
|
using NUnit.Framework;
|
|
using NUnit.Framework.Interfaces;
|
|
using NUnit.Framework.Internal;
|
|
using NUnit.Framework.Internal.Builders;
|
|
|
|
namespace Unity.Entities.Tests
|
|
{
|
|
[AttributeUsage(AttributeTargets.Method, AllowMultiple = true)]
|
|
public class TestCaseGenericAttribute : TestCaseAttribute, ITestBuilder
|
|
{
|
|
public TestCaseGenericAttribute(params Type[] typeArguments)
|
|
: base(new object[0])
|
|
{
|
|
TypeArguments = typeArguments;
|
|
}
|
|
|
|
public Type[] TypeArguments { get; set; }
|
|
|
|
IEnumerable<TestMethod> ITestBuilder.BuildFrom(IMethodInfo method, Test suite)
|
|
{
|
|
if (!method.IsGenericMethodDefinition)
|
|
return base.BuildFrom(method, suite);
|
|
|
|
if (TypeArguments == null || TypeArguments.Length != method.GetGenericArguments().Length)
|
|
{
|
|
var parms = new TestCaseParameters { RunState = RunState.NotRunnable };
|
|
parms.Properties.Set("_SKIPREASON", $"{nameof(TypeArguments)} should have {method.GetGenericArguments().Length} elements");
|
|
return new[] { new NUnitTestCaseBuilder().BuildTestMethod(method, suite, parms) };
|
|
}
|
|
|
|
var genMethod = method.MakeGenericMethod(TypeArguments);
|
|
return base.BuildFrom(genMethod, suite);
|
|
}
|
|
}
|
|
}
|