/// <summary> /// Initializes a new <see cref="VSTestContainerDiscoverer"/>. /// </summary> /// <param name="serviceProvider">Provides access to Visual Studio services</param> /// <param name="logger">Object that logs messages</param> /// <param name="solutionMonitor">Monitors a solution for changes</param> /// <param name="projectFileMonitor">Monitors a project for changes to its child items</param> /// <param name="fileWatcher">A file system watcher</param> /// <param name="containerFactory">Creates new <see cref="ITestContainer"/>s</param> public VSTestContainerDiscoverer( IServiceProvider serviceProvider, ILogger logger, ISolutionMonitor solutionMonitor, IProjectFileMonitor projectFileMonitor, IFileSystemWatcher fileWatcher, Func <ITestContainerDiscoverer, string, IVsProject, IVSTestContainer> containerFactory) { _serviceProvider = ValidateArg.NotNull(serviceProvider, "serviceProvider"); _logger = ValidateArg.NotNull(logger, "logger"); _solutionMonitor = ValidateArg.NotNull(solutionMonitor, "solutionMonitor"); _projectFileMonitor = ValidateArg.NotNull(projectFileMonitor, "projectFileMonitor"); _fileWatcher = ValidateArg.NotNull(fileWatcher, "fileWatcher"); _containerFactory = ValidateArg.NotNull(containerFactory, "containerFactory"); _solutionMonitor.SolutionChanged += solutionMonitor_SolutionChanged; _solutionMonitor.ProjectChanged += solutionMonitor_ProjectChanged; _solutionMonitor.StartMonitoring(); _projectFileMonitor.FileChanged += projectFileMonitor_FileChanged; _projectFileMonitor.StartMonitoring(); _fileWatcher.NotifyFilter = NotifyFilters.LastWrite; _fileWatcher.Filter = String.Format("*{0}", TestScript.FileExtension); _fileWatcher.IncludeSubdirectories = true; _fileWatcher.Error += fileWatcher_Error; }
public VSTestContainerDiscoverer( [Import(typeof(SVsServiceProvider))] IServiceProvider serviceProvider, ISolutionMonitor solutionMonitor, IProjectFileMonitor projectFileMonitor) : this(serviceProvider, new ActivityLogger(serviceProvider.GetService <IVsActivityLog, SVsActivityLog>(), typeof(VSTestContainerDiscoverer)), solutionMonitor, projectFileMonitor, new FileSystemWatcherAdapter(new FileSystemWatcher()), (disc, file, project) => new PowerShellTestContainer(disc, file, project)) { }
protected override void Initialize() { _logger = new FileLogger(Path.GetTempPath(), autoFlush: true); _solutionMonitor = new VsSolutionMonitor(this, _logger); _uiContextMonitor = new UiContextMonitor(_logger); _uiContextMonitor.AddContext(KnownUIContexts.NoSolutionContext, "NoSolution"); _uiContextMonitor.AddContext(KnownUIContexts.SolutionOpeningContext, "SolutionOpening"); _uiContextMonitor.AddContext(KnownUIContexts.SolutionExistsContext, "SolutionExists"); _uiContextMonitor.AddContext(KnownUIContexts.SolutionExistsAndFullyLoadedContext, "SolutionExistsAndFullyLoaded"); _uiContextMonitor.AddContext(KnownUIContexts.SolutionExistsAndNotBuildingAndNotDebuggingContext, "SolutionExistsAndNotBuildingAndNotDebugging"); _uiContextMonitor.AddContext(KnownUIContexts.SolutionBuildingContext, "SolutionBuilding"); }
protected override void Dispose(bool disposing) { if (disposing) { _uiContextMonitor?.Dispose(); _uiContextMonitor = null; _solutionMonitor?.Dispose(); _solutionMonitor = null; _logger?.Dispose(); _logger = null; } base.Dispose(disposing); }