public void GetFullPathToDependentAssembliesShouldReturnV1FrameworkAssembly() { // Arrange. var v1AssemblyName = new AssemblyName("Microsoft.VisualStudio.QualityTools.UnitTestFramework"); var testableAssembly = new TestableAssembly(); testableAssembly.GetReferencedAssembliesSetter = () => { return(new AssemblyName[] { v1AssemblyName }); }; var mockAssemblyUtility = new Mock <IAssemblyUtility>(); mockAssemblyUtility.Setup(au => au.ReflectionOnlyLoadFrom(It.IsAny <string>())).Returns(testableAssembly); mockAssemblyUtility.Setup(au => au.ReflectionOnlyLoad(It.IsAny <string>())) .Returns(new TestableAssembly(v1AssemblyName.Name)); var worker = new AssemblyLoadWorker(mockAssemblyUtility.Object); // Act. var dependentAssemblies = worker.GetFullPathToDependentAssemblies("C:\\temp\\test3424.dll", out var warnings); // Assert. var utfassembly = Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), "Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll"); CollectionAssert.Contains(dependentAssemblies, utfassembly); }
public static TestableAspNetTestAssemblyRunner Create(Type fixtureType, bool failTestCase = false) { var assembly = TestableAssembly.Create(fixtureType, failTestCase: failTestCase); var testAssembly = GetTestAssembly(assembly); var testCase = GetTestCase(assembly, testAssembly); return(new TestableAspNetTestAssemblyRunner( testAssembly, new[] { testCase }, diagnosticMessageSink: new NullMessageSink(), executionMessageSink: new NullMessageSink(), executionOptions: Mock.Of <ITestFrameworkExecutionOptions>())); // Do not call Xunit.Sdk.Reflector.Wrap(assembly) because it uses GetTypes() and that method // throws NotSupportedException for a dynamic assembly. IAssemblyInfo GetAssemblyInfo(Assembly assembly) { var testAssemblyName = assembly.GetName().Name; var assemblyInfo = new Mock <IReflectionAssemblyInfo>(); assemblyInfo.SetupGet(r => r.Assembly).Returns(assembly); assemblyInfo.SetupGet(r => r.Name).Returns(testAssemblyName); assemblyInfo .SetupGet(r => r.AssemblyPath) .Returns(Path.Combine(Directory.GetCurrentDirectory(), $"{testAssemblyName}.dll")); foreach (var attribute in CustomAttributeData.GetCustomAttributes(assembly)) { var attributeInfo = Reflector.Wrap(attribute); var attributeName = attribute.AttributeType.AssemblyQualifiedName; assemblyInfo .Setup(r => r.GetCustomAttributes(attributeName)) .Returns(new[] { attributeInfo }); } var typeInfo = Reflector.Wrap(assembly.GetType(TestableAssembly.TestClassName)); assemblyInfo.Setup(r => r.GetType(TestableAssembly.TestClassName)).Returns(typeInfo); assemblyInfo.Setup(r => r.GetTypes(It.IsAny <bool>())).Returns(new[] { typeInfo }); return(assemblyInfo.Object); } ITestAssembly GetTestAssembly(Assembly assembly) { var assemblyInfo = GetAssemblyInfo(assembly); return(new TestAssembly(assemblyInfo)); } IXunitTestCase GetTestCase(Assembly assembly, ITestAssembly testAssembly) { var testAssemblyName = assembly.GetName().Name; var testCollection = new TestCollection( testAssembly, collectionDefinition: null, displayName: $"Mock collection for '{testAssemblyName}'."); var type = assembly.GetType(TestableAssembly.TestClassName); var testClass = new TestClass(testCollection, Reflector.Wrap(type)); var method = type.GetMethod(TestableAssembly.TestMethodName); var methodInfo = Reflector.Wrap(method); var testMethod = new TestMethod(testClass, methodInfo); return(new XunitTestCase( diagnosticMessageSink: new NullMessageSink(), defaultMethodDisplay: TestMethodDisplay.ClassAndMethod, defaultMethodDisplayOptions: TestMethodDisplayOptions.None, testMethod: testMethod)); } }