Best NBi code snippet using NBi.NUnit.Builder.Helper.InstanceArgsBuilder.Setup
TestSuite.cs
Source:TestSuite.cs
...45 internal TestSuiteProvider TestSuiteProvider { get; private set; }46 internal ConnectionStringsFinder ConnectionStringsFinder { get; set; }47 internal ConfigurationProvider ConfigurationProvider { get; private set; }4849 internal IDictionary<Guid, IDecorationCommand> Setups { get; } = new Dictionary<Guid, IDecorationCommand>();5051 public TestSuite()52 : this(new XmlManager(), new TestSuiteProvider(), new ConfigurationProvider(), new ConnectionStringsFinder())53 { }5455 public TestSuite(XmlManager testSuiteManager)56 : this(testSuiteManager, null, new NullConfigurationProvider(), new ConnectionStringsFinder())57 { }5859 public TestSuite(XmlManager testSuiteManager, TestSuiteProvider testSuiteProvider)60 : this(testSuiteManager, testSuiteProvider, new NullConfigurationProvider(), new ConnectionStringsFinder())61 { }6263 public TestSuite(TestSuiteProvider testSuiteProvider)64 : this(new XmlManager(), testSuiteProvider, new NullConfigurationProvider(), null)65 { }6667 public TestSuite(TestSuiteProvider testSuiteProvider, ConfigurationProvider configurationProvider)68 : this(new XmlManager(), testSuiteProvider, configurationProvider ?? new NullConfigurationProvider(), null)69 { }7071 public TestSuite(TestSuiteProvider testSuiteProvider, ConfigurationProvider configurationProvider, ConnectionStringsFinder connectionStringsFinder)72 : this(new XmlManager(), testSuiteProvider, configurationProvider ?? new NullConfigurationProvider(), connectionStringsFinder)73 { }7475 protected TestSuite(XmlManager testSuiteManager, TestSuiteProvider testSuiteProvider, ConfigurationProvider configurationProvider, ConnectionStringsFinder connectionStringsFinder)76 {77 TestSuiteManager = testSuiteManager;78 TestSuiteProvider = testSuiteProvider;79 ConfigurationProvider = configurationProvider;80 ConnectionStringsFinder = connectionStringsFinder;81 }8283 [Test, TestCaseSource("GetTestCases")]84 public virtual void ExecuteTestCases(TestXml test, string testName, IDictionary<string, IVariable> localVariables)85 {86 if (ConfigurationProvider != null)87 {88 Trace.WriteLineIf(NBiTraceSwitch.TraceError, string.Format("Loading configuration"));89 var config = ConfigurationProvider.GetSection();90 ApplyConfig(config);91 }92 else93 Trace.WriteLineIf(NBiTraceSwitch.TraceError, $"No configuration-finder found.");9495 Trace.WriteLineIf(NBiTraceSwitch.TraceVerbose, $"Test loaded by {GetOwnFilename()}");96 Trace.WriteLineIf(NBiTraceSwitch.TraceInfo, $"{Variables.Count()} variables defined, {Variables.Count(x => x.Value.IsEvaluated())} already evaluated.");9798 if (serviceLocator == null)99 Initialize();100101 //check if ignore is set to true102 if (test.IsNotImplemented)103 {104 Trace.WriteLineIf(NBiTraceSwitch.TraceInfo, $"Test not-implemented, will be ignored. Reason is '{test.NotImplemented.Reason}'");105 Assert.Ignore(test.IgnoreReason);106 }107 else if (test.Ignore)108 {109 Trace.WriteLineIf(NBiTraceSwitch.TraceInfo, $"Test ignored. Reason is '{test.IgnoreReason}'");110 Assert.Ignore(test.IgnoreReason);111 }112 else113 {114 Trace.WriteLineIf(NBiTraceSwitch.TraceInfo, $"Running test '{testName}' #{test.UniqueIdentifier}");115 var allVariables = Variables.Union(localVariables).ToDictionary(x => x.Key, x=>x.Value);116 ValidateConditions(test.Condition, allVariables);117 RunSetup(test.Setup, allVariables);118 foreach (var sut in test.Systems)119 {120 if ((test?.Constraints.Count ?? 0) == 0)121 Trace.WriteLineIf(NBiTraceSwitch.TraceWarning, $"Test '{testName}' has no constraint. It will always result in a success.");122 123 foreach (var ctr in test.Constraints)124 {125 var factory = new TestCaseFactory(Configuration, allVariables, serviceLocator);126 var testCase = factory.Instantiate(sut, ctr);127 try128 {129 AssertTestCase(testCase.SystemUnderTest, testCase.Constraint, test.Content);130 }131 catch132 {133 ExecuteCleanup(test.Cleanup, allVariables);134 throw;135 }136 }137 }138 ExecuteCleanup(test.Cleanup, allVariables);139 }140 }141142 private void ValidateConditions(ConditionXml condition, IDictionary<string, IVariable> allVariables)143 {144 foreach (var predicate in condition.Predicates)145 {146 var helper = new ConditionHelper(serviceLocator, allVariables);147 var args = helper.Execute(predicate);148 var impl = new DecorationFactory().Instantiate(args);149 var isVerified = impl.Validate();150 if (!isVerified)151 {152 Trace.WriteLineIf(NBiTraceSwitch.TraceInfo, $"Test ignored. At least one condition was not validated: '{impl.Message}'");153 Assert.Ignore($"This test has been ignored because following check wasn't successful: {impl.Message}");154 }155 }156 }157158 private void RunSetup(SetupXml setupXml, IDictionary<string, IVariable> allVariables)159 {160 var setupHelper = new SetupHelper(serviceLocator, allVariables);161 var commands = BuildSetup(setupHelper, setupXml);162 ExecuteSetup(commands);163 }164165 internal IEnumerable<IDecorationCommand> BuildSetup(SetupHelper helper, SetupXml setupXml)166 {167 var commandArgs = helper.Execute(setupXml.Commands);168 var factory = new DecorationFactory();169170 var commands = new List<IDecorationCommand>();171 foreach (var arg in commandArgs)172 {173 if (Setups.ContainsKey(arg.Guid))174 commands.Add(Setups[arg.Guid]);175 else176 { 177 var command = factory.Instantiate(arg);178 if (command is IGroupCommand groupCommand && groupCommand.RunOnce)179 Setups.Add(arg.Guid, command);180 commands.Add(command);181 }182 }183 return commands;184 }185186 internal void ExecuteSetup(IEnumerable<IDecorationCommand> commands)187 { 188 try189 {190 foreach (var command in commands)191 {192 if (!((command is IGroupCommand groupCommand) && groupCommand.RunOnce && groupCommand.HasRun))193 {194 command.Execute();195 if (command is IGroupCommand executedGroupCommand)196 executedGroupCommand.HasRun = true;197 }198 }199 }200 catch (Exception ex)201 {202 HandleExceptionDuringSetup(ex);203 }204 }205206 protected virtual void HandleExceptionDuringSetup(Exception ex)207 {208 var message = string.Format("Exception during the setup of the test: {0}", ex.Message);209 message += "\r\n" + ex.StackTrace;210 if (ex.InnerException != null)211 {212 message += "\r\n" + ex.InnerException.Message;213 message += "\r\n" + ex.InnerException.StackTrace;214 }215 Trace.WriteLineIf(NBiTraceSwitch.TraceWarning, message);216 //If failure during setup then the test is failed!217 Assert.Fail(message);218 }219220 private void ExecuteCleanup(CleanupXml cleanup, IDictionary<string, IVariable> allVariables)221 {222 var cleanupHelper = new SetupHelper(serviceLocator, allVariables);223 var commands = cleanupHelper.Execute(cleanup.Commands);224225 try226 {227 foreach (var command in commands)228 {229 var impl = new DecorationFactory().Instantiate(command);230 impl.Execute();231 }232 }233 catch (Exception ex)234 {235 HandleExceptionDuringCleanup(ex);236 }237 }238239 protected virtual void HandleExceptionDuringCleanup(Exception ex)240 {241 var message = string.Format("Exception during the cleanup of the test: {0}", ex.Message);242 Trace.WriteLineIf(NBiTraceSwitch.TraceWarning, message);243 Trace.WriteLineIf(NBiTraceSwitch.TraceWarning, "Next cleanup functions are skipped.");244 }245246 /// <summary>247 /// Handles the standard assertion and if needed rethrow a new AssertionException with a modified stacktrace248 /// </summary>249 /// <param name="systemUnderTest"></param>250 /// <param name="constraint"></param>251 protected internal void AssertTestCase(object systemUnderTest, NUnitCtr.Constraint constraint, string stackTrace)252 {253 try254 {255 Assert.That(systemUnderTest, constraint);256 }257 catch (AssertionException ex)258 {259 throw new CustomStackTraceAssertionException(ex, stackTrace);260 }261 catch (NBiException ex)262 {263 throw new CustomStackTraceErrorException(ex, stackTrace);264 }265 }266267 public IEnumerable<TestCaseData> GetTestCases()268 {269 Trace.WriteLineIf(NBiTraceSwitch.TraceInfo, $"GetTestCases() has been called");270 //Find configuration of NBi271 var config = ConfigurationProvider.GetSection();272 ApplyConfig(config);273274 //Find connection strings referecned from an external file275 if (ConnectionStringsFinder != null)276 TestSuiteManager.ConnectionStrings = ConnectionStringsFinder.Find();277278 //Service Locator279 if (serviceLocator == null)280 Initialize();281282 //Build the Test suite283 var testSuiteFilename = TestSuiteProvider.GetFilename(config.TestSuiteFilename);284 TestSuiteManager.Load(testSuiteFilename, SettingsFilename, AllowDtdProcessing);285 serviceLocator.SetBasePath(TestSuiteManager.TestSuite.Settings.BasePath); 286287 //Build the variables288 Variables = BuildVariables(TestSuiteManager.TestSuite.Variables, OverridenVariables);289290 return BuildTestCases();291 }292293 private IDictionary<string, IVariable> BuildVariables(IEnumerable<GlobalVariableXml> variables, IDictionary<string, object> overridenVariables)294 {295 var instances = new Dictionary<string, IVariable>();296 var resolverFactory = serviceLocator.GetScalarResolverFactory();297298 Trace.WriteLineIf(NBiTraceSwitch.TraceInfo, $"{variables.Count()} variable{(variables.Count() > 1 ? "s" : string.Empty)} defined in the test-suite.");299 var variableFactory = new VariableFactory();300 foreach (var variable in variables)301 {302 if (overridenVariables.ContainsKey(variable.Name))303 {304 var instance = new OverridenVariable(variable.Name, overridenVariables[variable.Name]);305 instances.Add(variable.Name, instance);306 }307 else308 {309 var builder = new ScalarResolverArgsBuilder(serviceLocator, new Context(instances));310 311 if (variable.Script != null)312 builder.Setup(variable.Script);313 else if (variable.QueryScalar != null)314 {315 variable.QueryScalar.Settings = TestSuiteManager.TestSuite.Settings;316 variable.QueryScalar.Default = TestSuiteManager.TestSuite.Settings.GetDefault(Xml.Settings.SettingsXml.DefaultScope.Variable);317 builder.Setup(variable.QueryScalar, variable.QueryScalar.Settings, Xml.Settings.SettingsXml.DefaultScope.Variable);318 }319 else if (variable.Environment != null)320 builder.Setup(variable.Environment);321 else if (variable.Custom != null)322 builder.Setup(variable.Custom);323 builder.Build();324 var args = builder.GetArgs();325326 var resolver = resolverFactory.Instantiate(args);327 instances.Add(variable.Name, variableFactory.Instantiate(VariableScope.Global, resolver));328 }329330 }331332 return instances;333 }334335 internal IEnumerable<TestCaseData> BuildTestCases()336 {337 List<TestCaseData> testCasesNUnit = new List<TestCaseData>();338339 testCasesNUnit.AddRange(BuildTestCases(TestSuiteManager.TestSuite.Tests));340 testCasesNUnit.AddRange(BuildTestCases(TestSuiteManager.TestSuite.Groups));341342 return testCasesNUnit;343 }344345 private IEnumerable<TestCaseData> BuildTestCases(IEnumerable<TestXml> tests)346 {347 var testCases = new List<TestCaseData>(tests.Count());348349 foreach (var test in tests)350 {351 // Build different instances for a test, if no instance-settling is defined then the default instance is created352 var instanceArgsBuilder = new InstanceArgsBuilder(serviceLocator, Variables);353 instanceArgsBuilder.Setup(TestSuiteManager.TestSuite.Settings);354 instanceArgsBuilder.Setup(test.InstanceSettling);355 instanceArgsBuilder.Build();356357 var factory = new InstanceFactory();358 var instances = factory.Instantiate(instanceArgsBuilder.GetArgs());359360 // For each instance create a test-case361 foreach (var instance in instances)362 {363 var scalarHelper = new ScalarHelper(serviceLocator, new Context(instance.Variables));364365 var testName = instance.IsDefault 366 ? $"{test.GetName()}" 367 : test.GetName().StartsWith("~")368 ? scalarHelper.InstantiateResolver<string>(test.GetName()).Execute()
...
InstanceArgsBuilder.cs
Source:InstanceArgsBuilder.cs
...21 public class InstanceArgsBuilder22 {23 private ServiceLocator ServiceLocator { get; }24 private IDictionary<string, IVariable> Variables { get; }25 private bool isSetup = false;26 private object obj = null;27 private SettingsXml settings = SettingsXml.Empty;28 private IInstanceArgs args = null;29 public InstanceArgsBuilder(ServiceLocator serviceLocator, IDictionary<string, IVariable> variables)30 => (ServiceLocator, Variables) = (serviceLocator, variables);31 public void Setup(SettingsXml settings)32 {33 this.settings = settings;34 }35 public void Setup(InstanceSettlingXml definition)36 {37 obj = definition;38 isSetup = true;39 }40 public void Build()41 {42 if (!isSetup)43 throw new InvalidOperationException();44 if (obj == InstanceSettlingXml.Unique)45 args = new DefaultInstanceArgs();46 else if ((obj as InstanceSettlingXml).Variable != null)47 {48 var variable = (obj as InstanceSettlingXml).Variable;49 var argsBuilder = new SequenceResolverArgsBuilder(ServiceLocator);50 argsBuilder.Setup(settings);51 argsBuilder.Setup(Variables);52 argsBuilder.Setup(variable.Type);53 if (variable.SentinelLoop != null)54 argsBuilder.Setup(variable.SentinelLoop);55 else if (variable.FileLoop != null)56 argsBuilder.Setup(variable.FileLoop);57 else if (variable.Custom != null)58 argsBuilder.Setup(variable.Custom);59 else if (variable.Query != null)60 argsBuilder.Setup(variable.Query);61 else if (variable.Items != null && variable.Items.Count>0)62 argsBuilder.Setup(variable.Items);63 else64 throw new ArgumentOutOfRangeException();65 argsBuilder.Build();66 var factory = new SequenceResolverFactory(ServiceLocator);67 var innerResolver = factory.Instantiate(variable.Type, argsBuilder.GetArgs());68 var sequenceResolver = BuildFilterSequenceResolver(variable.Type, innerResolver, variable.Filter);69 if (((obj as InstanceSettlingXml).DerivedVariables?.Count() ?? 0) == 0)70 {71 args = new SingleVariableInstanceArgs()72 {73 Name = variable.Name,74 Resolver = sequenceResolver,75 Categories = (obj as InstanceSettlingXml).Categories,76 Traits = (obj as InstanceSettlingXml).Traits.ToDictionary(x => x.Name, x => x.Value),...
Setup
Using AI Code Generation
1using System;2using System.Collections.Generic;3using System.Linq;4using System.Text;5using System.Threading.Tasks;6{7 {8 public InstanceArgsBuilder()9 {10 Instance = new InstanceArgs();11 }12 public InstanceArgs Instance { get; set; }13 public InstanceArgsBuilder Setup(string name, string type, string value)14 {15 Instance.Name = name;16 Instance.Type = type;17 Instance.Value = value;18 return this;19 }20 }21}22using System;23using System.Collections.Generic;24using System.Linq;25using System.Text;26using System.Threading.Tasks;27using NBi.NUnit.Builder.Helper;28{29 {30 public void Setup_InstanceArgsBuilder_InstanceArgs()31 {32 var instanceArgsBuilder = new InstanceArgsBuilder();33 var instanceArgs = instanceArgsBuilder.Setup("name", "type", "value").Instance;34 Assert.That(instanceArgs.Name, Is.EqualTo("name"));35 Assert.That(instanceArgs.Type, Is.EqualTo("type"));36 Assert.That(instanceArgs.Value, Is.EqualTo("value"));37 }38 }39}
Setup
Using AI Code Generation
1var instanceArgsBuilder = new InstanceArgsBuilder();2var instanceArgs = instanceArgsBuilder.Setup("1", "2", "3").GetArgs();3var instanceArgsBuilder = new InstanceArgsBuilder();4var instanceArgs = instanceArgsBuilder.Setup("1", "2", "3").GetArgs();5var instanceArgsBuilder = new InstanceArgsBuilder();6var instanceArgs = instanceArgsBuilder.Setup("1", "2", "3").GetArgs();7var instanceArgsBuilder = new InstanceArgsBuilder();8var instanceArgs = instanceArgsBuilder.Setup("1", "2", "3").GetArgs();9var instanceArgsBuilder = new InstanceArgsBuilder();10var instanceArgs = instanceArgsBuilder.Setup("1", "2", "3").GetArgs();11var instanceArgsBuilder = new InstanceArgsBuilder();12var instanceArgs = instanceArgsBuilder.Setup("1", "2", "3").GetArgs();13var instanceArgsBuilder = new InstanceArgsBuilder();14var instanceArgs = instanceArgsBuilder.Setup("1", "2", "3").GetArgs();15var instanceArgsBuilder = new InstanceArgsBuilder();16var instanceArgs = instanceArgsBuilder.Setup("1", "2", "3").GetArgs();17var instanceArgsBuilder = new InstanceArgsBuilder();18var instanceArgs = instanceArgsBuilder.Setup("1", "2", "3").GetArgs();19var instanceArgsBuilder = new InstanceArgsBuilder();20var instanceArgs = instanceArgsBuilder.Setup("1", "2", "3").GetArgs();21var instanceArgsBuilder = new InstanceArgsBuilder();
Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.
You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.
Get 100 minutes of automation test minutes FREE!!