private void ExploreContext(IProject project, IMetadataAssembly assembly, ITypeInfo type) { var contextElement = _factory.GetOrCreateContext( project, new ClrTypeName(type.FullyQualifiedName), assembly.Location, type.GetSubject(), type.GetTags().ToArray(), type.IsIgnored()); _observer.OnUnitTestElement(contextElement); var fields = type.GetFields().ToArray(); var specifications = fields.Where(x => x.IsSpecification()); var behaviors = fields.Where(x => x.IsBehavior()); foreach (var specification in specifications) { ExploreSpecification(project, contextElement, type, specification); } foreach (var behavior in behaviors) { ExploreBehavior(project, contextElement, type, behavior); } _observer.OnUnitTestElementChanged(contextElement); }
public override IUnitTestElement Map(Test test) { using (ReadLockCookie.Create()) { var assemblyPath = _project?.GetOutputFilePath(_targetFrameworkId); var typeName = GetType(test); var fieldName = GetField(test); var subject = GetTraits(test, "Subject").FirstOrDefault(); var tags = GetTraits(test, "Tag"); var behaviorField = GetTraits(test, "BehaviorField").FirstOrDefault(); var behaviorType = GetTraits(test, "BehaviorType").FirstOrDefault(); var type = new ClrTypeName(typeName); var context = _factory.GetOrCreateContext(_project, type, assemblyPath, subject, tags.ToArray(), false); if (!string.IsNullOrEmpty(behaviorField) && !string.IsNullOrEmpty(behaviorType)) { var behavior = _factory.GetOrCreateBehavior(_project, context, type, behaviorField, false); return(_factory.GetOrCreateBehaviorSpecification(_project, behavior, new ClrTypeName(behaviorType), fieldName, false)); } return(_factory.GetOrCreateContextSpecification(_project, context, type, fieldName, false)); } }
private void ProcessContext(ITypeInfo type, IDeclaration declaration, bool isClear) { var name = new ClrTypeName(type.FullyQualifiedName); var project = declaration.GetProject(); var assemblyPath = project?.GetOutputFilePath(_observer.TargetFrameworkId); var context = _factory.GetOrCreateContext( project, name, assemblyPath, type.GetSubject(), type.GetTags().ToArray(), type.IsIgnored()); _contexts[name] = context; if (isClear) { OnUnitTestElement(context, declaration); } }