public void SetUp() { _cSharpProjectGenerator = new CSharpProjectGenerator(_projectName, _outputDirectory); _classFiles = new List <string>(); _classFiles.Add("FooClass.cs"); _classFiles.Add("BarClass.cs"); _cSharpProjectGenerator.ClassFiles = _classFiles; _referencedAssemblies = new List <AssemblyName>(); _referencedAssemblies.Add(new AssemblyName("FooAssembly.dll")); _referencedAssemblies.Add(new AssemblyName("BarAssembly.dll")); _cSharpProjectGenerator.ReferencedAssemblies = _referencedAssemblies; }
public void SetUp() { //var buildSystem = new StandardBuildSystem(); var buildSystem = new FakeBuildSystem(); _cSharpProjectGenerator = new CSharpProjectGenerator(buildSystem, _projectName, _outputDirectory); _classFiles = new List <string>(); _classFiles.Add("FooClass.cs"); _classFiles.Add("BarClass.cs"); _cSharpProjectGenerator.ClassFiles = _classFiles; _referencedAssemblies = new List <AssemblyName>(); _referencedAssemblies.Add(new AssemblyName("FooAssembly.dll")); _referencedAssemblies.Add(new AssemblyName("BarAssembly.dll")); _cSharpProjectGenerator.ReferencedAssemblies = _referencedAssemblies; }
private void WorkerDoWork(object sender, DoWorkEventArgs e) { try { var parObj = (object[])e.Argument; var parameters = (GeneratorRunnerData)parObj[0]; var codeGeneratorSetup = (ICodeGeneratorSetup)parObj[1]; var prjName = Path.GetFileNameWithoutExtension(parameters.InputAssemblyPath) + ".Tests"; var prj = new CSharpProjectGenerator(this.buildSystem, prjName, parameters.OutputFolder); // var builderFactory = NStub.CSharp.ObjectGeneration.TestBuilderFactory.Default; var testProjectBuilder = new CSharpTestProjectBuilder( this.buildSystem, this.buildData, prj, (pbuildSystem, pbuildData, configuration, codeNamespace) => { // var testBuilders = new TestBuilderFactory(); var codeGenerator = (ICodeGenerator)Activator.CreateInstance( parameters.GeneratorType, new object[] { pbuildSystem, codeNamespace, null, configuration }); // codeNamespace.Dump(3); if (codeGenerator is BaseCSharpCodeGenerator) { ((BaseCSharpCodeGenerator)codeGenerator).BuildProperties = pbuildData as BuildDataDictionary; } return(codeGenerator); }, this.Log); testProjectBuilder.CustomGeneratorParameters = codeGeneratorSetup; testProjectBuilder.GenerateTests(parameters); } catch (Exception ex) { this.Log(ex.ToString()); } }
public void SetUp() { //var buildSystem = new StandardBuildSystem(); var buildSystem = new FakeBuildSystem(); _cSharpProjectGenerator = new CSharpProjectGenerator(buildSystem, _projectName, _outputDirectory); _classFiles = new List<string>(); _classFiles.Add("FooClass.cs"); _classFiles.Add("BarClass.cs"); _cSharpProjectGenerator.ClassFiles = _classFiles; _referencedAssemblies = new List<AssemblyName>(); _referencedAssemblies.Add(new AssemblyName("FooAssembly.dll")); _referencedAssemblies.Add(new AssemblyName("BarAssembly.dll")); _cSharpProjectGenerator.ReferencedAssemblies = _referencedAssemblies; }
public void SetUp() { _cSharpProjectGenerator = new CSharpProjectGenerator(_projectName, _outputDirectory); _classFiles = new List<string>(); _classFiles.Add("FooClass.cs"); _classFiles.Add("BarClass.cs"); _cSharpProjectGenerator.ClassFiles = _classFiles; _referencedAssemblies = new List<AssemblyName>(); _referencedAssemblies.Add(new AssemblyName("FooAssembly.dll")); _referencedAssemblies.Add(new AssemblyName("BarAssembly.dll")); _cSharpProjectGenerator.ReferencedAssemblies = _referencedAssemblies; }
/// <summary> /// Handles the Click event of the btnGo control. Creates a list of the methods /// for which the user wishes to generate test cases for and instantiates an /// instance of NStub around these methods. The sources are files are then /// generated. /// </summary> /// <param name="sender">The source of the event.</param> /// <param name="e">The <see cref="T:System.EventArgs"/> instance containing the /// event data.</param> private void btnGo_Click(object sender, EventArgs e) { Cursor.Current = Cursors.WaitCursor; _browseInputAssemblyButton.Enabled = false; _browseOutputDirectoryButton.Enabled = false; // Create a new directory for each assembly for (int h = 0; h < _assemblyGraphTreeView.Nodes.Count; h++) { string outputDirectory = _outputDirectoryTextBox.Text + Path.DirectorySeparatorChar + Path.GetFileNameWithoutExtension(_assemblyGraphTreeView.Nodes[h].Text) + "Test"; Directory.CreateDirectory(outputDirectory); // Create our project generator CSharpProjectGenerator cSharpProjectGenerator = new CSharpProjectGenerator( Path.GetFileNameWithoutExtension(_inputAssemblyTextBox.Text) + "Test", outputDirectory); // Add our referenced assemblies to the project generator so we // can build the resulting project foreach (AssemblyName assemblyName in _referencedAssemblies) { cSharpProjectGenerator.ReferencedAssemblies.Add(assemblyName); } // Generate the new test namespace // At the assembly level for (int i = 0; i < _assemblyGraphTreeView.Nodes[h].Nodes.Count; i++) { if (_assemblyGraphTreeView.Nodes[h].Nodes[i].Checked) { // Create the namespace and initial inputs CodeNamespace codeNamespace = new CodeNamespace(); // At the type level for (int j = 0; j < _assemblyGraphTreeView.Nodes[h].Nodes[i].Nodes.Count; j++) { //TODO: This namespace isn't being set correctly. // Also one namespace per run probably won't work, we may // need to break this up more. codeNamespace.Name = Utility.GetNamespaceFromFullyQualifiedTypeName( _assemblyGraphTreeView.Nodes[h].Nodes[i].Nodes[j].Text); if (_assemblyGraphTreeView.Nodes[h].Nodes[i].Nodes[j].Checked) { // Create the class CodeTypeDeclaration testClass = new CodeTypeDeclaration(_assemblyGraphTreeView.Nodes[h].Nodes[i].Nodes[j].Text); codeNamespace.Types.Add(testClass); // At the method level // Create a test method for each method in this type for (int k = 0; k < _assemblyGraphTreeView.Nodes[h].Nodes[i].Nodes[j].Nodes.Count; k++) { try { if (_assemblyGraphTreeView.Nodes[h].Nodes[i].Nodes[j].Nodes[k].Checked) { // Retrieve the MethodInfo object from this TreeNode's tag CodeMemberMethod codeMemberMethod = CreateMethod( _assemblyGraphTreeView.Nodes[h].Nodes[i].Nodes[j].Nodes[k].Text, (MethodInfo)_assemblyGraphTreeView.Nodes[h].Nodes[i].Nodes[j].Nodes[k].Tag); testClass.Members.Add(codeMemberMethod); } } catch (Exception) { return; } } } } // Now write the test file NStubCore nStub = new NStubCore(codeNamespace, outputDirectory, new CSharpCodeGenerator(codeNamespace, outputDirectory)); nStub.GenerateCode(); // Add all of our classes to the project foreach (CodeTypeDeclaration codeType in nStub.CodeNamespace.Types) { string fileName = codeType.Name; fileName = fileName.Remove(0, (fileName.LastIndexOf(".") + 1)); fileName += ".cs"; cSharpProjectGenerator.ClassFiles.Add(fileName); } } } // Now write the project file and add all of the test files to it cSharpProjectGenerator.GenerateProjectFile(); } _browseInputAssemblyButton.Enabled = true; _browseOutputDirectoryButton.Enabled = true; Cursor.Current = Cursors.Arrow; }