Best JustMockLite code snippet using Telerik.JustMock.Tests.NonPublicFixture
NonPublicFixture.cs
Source:NonPublicFixture.cs
...44#endregion45namespace Telerik.JustMock.Tests46{47 [TestClass]48 public class NonPublicFixture49 {50 [TestMethod, TestCategory("Lite"), TestCategory("NonPublic")]51 public void ShouldMockProtectedVirtualMembers()52 {53 var foo = Mock.Create<Foo>(Behavior.CallOriginal);54 Mock.NonPublic.Arrange(foo, "Load").MustBeCalled();55 foo.Init();56 Mock.Assert(foo);57 }58 [TestMethod, TestCategory("Lite"), TestCategory("NonPublic")]59 public void ShouldMockProtectedProperty()60 {61 var foo = Mock.Create<Foo>(Behavior.CallOriginal);62 Mock.NonPublic.Arrange<int>(foo, "IntValue").Returns(10);63 int ret = foo.GetMultipleOfIntValue();64 Assert.Equal(20, ret);65 }66 [TestMethod, TestCategory("Lite"), TestCategory("NonPublic")]67 public void ShouldMockOverloadUsingMatchers()68 {69 var foo = Mock.Create<Foo>(Behavior.CallOriginal);70 bool called = false;71 Mock.NonPublic72 .Arrange(foo, "ExecuteProtected", Arg.Expr.IsAny<int>(), Arg.Expr.IsNull<Foo>())73 .DoInstead(() => called = true);74 foo.Execute(10, null);75 Assert.True(called);76 }77 [TestMethod, TestCategory("Lite"), TestCategory("NonPublic")]78 public void ShouldMockOverloadUsingConcreteValues()79 {80 var foo = Mock.Create<Foo>(Behavior.CallOriginal);81 bool called = false, called2 = false;82 Mock.NonPublic83 .Arrange(foo, "ExecuteProtected", 10, Arg.Expr.IsNull<FooDerived>())84 .DoInstead(() => called = true);85 Mock.NonPublic86 .Arrange(foo, "ExecuteProtected", Arg.Expr.IsNull<FooDerived>(), 10)87 .DoInstead(() => called2 = true);88 foo.Execute(10, null);89 foo.Execute(null, 10);90 Assert.True(called);91 Assert.True(called2);92 }93 [TestMethod, TestCategory("Lite"), TestCategory("NonPublic")]94 public void ShouldThrowArgumentExpectionForNullArguments()95 {96 var foo = Mock.Create<Foo>(Behavior.CallOriginal);97 Assert.Throws<ArgumentException>(() => Mock.NonPublic.Arrange(foo, "ExecuteProtected", 0, null));98 }99 [TestMethod, TestCategory("Lite"), TestCategory("NonPublic")]100 public void ShouldAssertNonPublicActions()101 {102 var foo = Mock.Create<Foo>(Behavior.CallOriginal);103 Mock.NonPublic.Arrange(foo, "ExecuteProtected", 10);104 foo.Execute(10);105 // assert if called as expected.106 Mock.NonPublic.Assert(foo, "ExecuteProtected", 10);107 }108 [TestMethod, TestCategory("Lite"), TestCategory("NonPublic")]109 public void ShouldAssertNonPublicFunctions()110 {111 var foo = Mock.Create<Foo>(Behavior.CallOriginal);112 Mock.NonPublic.Arrange<int>(foo, "IntValue").Returns(10);113 foo.GetMultipleOfIntValue();114 Mock.NonPublic.Assert<int>(foo, "IntValue");115 }116 [TestMethod, TestCategory("Lite"), TestCategory("NonPublic")]117 public void ShouldThrowForAssertingCallsThatWereNotInvoked()118 {119 var foo = Mock.Create<Foo>(Behavior.CallOriginal);120 Mock.NonPublic.Arrange(foo, "ExecuteProtected", 10);121 // assert if called as expected.122 Assert.Throws<AssertionException>(() => Mock.NonPublic.Assert(foo, "ExecuteProtected", 10));123 }124 [TestMethod, TestCategory("Lite"), TestCategory("NonPublic")]125 public void ShouldAssertOccrenceForNonPublicFunction()126 {127 var foo = Mock.Create<Foo>(Behavior.CallOriginal);128 Mock.NonPublic.Assert<int>(foo, "IntValue", Occurs.Never());129 }130 [TestMethod, TestCategory("Lite"), TestCategory("NonPublic")]131 public void ShouldAssertOccurenceForNonPublicAction()132 {133 var foo = Mock.Create<Foo>(Behavior.CallOriginal);134 Mock.NonPublic.Arrange(foo, "ExecuteProtected", 10);135 foo.Execute(10);136 Mock.NonPublic.Assert(foo, "ExecuteProtected", Occurs.Exactly(1), 10);137 }138 [TestMethod, TestCategory("Lite"), TestCategory("NonPublic")]139 public void ShouldThrowMissingMethodExceptionForMethodSpecification()140 {141 var foo = Mock.Create<Foo>(Behavior.CallOriginal);142 Assert.Throws<MissingMemberException>(() => Mock.NonPublic.Arrange(foo, "ExecuteProtected"));143 }144#if !SILVERLIGHT145 [TestMethod, TestCategory("Lite"), TestCategory("NonPublic")]146 public void ShouldCreateMockFromClassHavingAbstractInternalMethodInBase()147 {148 var foo = Mock.Create<FooAbstract2>();149 foo.TryCreateToken(string.Empty);150 }151 [TestMethod, TestCategory("Lite"), TestCategory("NonPublic")]152 public void ShouldMockTypeWithInternalCtorWhenInternalVisibleToIsApplied()153 {154 // Provided that InternalsVisibleTo attribute is included in assemblyinfo.cs.155 var foo = Mock.Create<FooInternal>(Behavior.CallOriginal);156 Assert.NotNull(foo.Builder);157 }158 [TestMethod, TestCategory("Lite"), TestCategory("NonPublic")]159 public void ShouldAssertNonPublicMethodFromBase()160 {161 var baz = Mock.Create<Baz>(Behavior.CallOriginal);162 const string targetMethod = "MethodToMock";163 Mock.NonPublic.Arrange(baz, targetMethod).DoNothing();164 baz.MethodToTest();165 Mock.NonPublic.Assert(baz, targetMethod);166 }167#if !PORTABLE168 [TestMethod, TestCategory("Lite"), TestCategory("NonPublic")]169 public void ShouldAssertNonPublicCallWhenOccurrenceIsApplied()170 {171 var baz = Mock.Create<Bar>(Behavior.CallOriginal);172 const string targetMethod = "MethodToMock";173 Mock.NonPublic.Arrange(baz, targetMethod).OccursOnce();174 baz.GetType().GetMethod(targetMethod, BindingFlags.NonPublic | BindingFlags.Instance).Invoke(baz, null);175 Mock.NonPublic.Assert(baz, targetMethod);176 }177 [TestMethod, TestCategory("Lite"), TestCategory("NonPublic"), TestCategory("Assertion")]178 public void ShouldGetTimesCalledOfNonPublicMethod()179 {180 var mock = Mock.Create<Bar>();181 Mock.NonPublic.MakePrivateAccessor(mock).CallMethod("MethodToMock");182 Assert.Equal(1, Mock.NonPublic.GetTimesCalled(mock, "MethodToMock"));183 Assert.Equal(1, Mock.NonPublic.GetTimesCalled(mock, typeof(Bar).GetMethod("MethodToMock", BindingFlags.NonPublic | BindingFlags.Instance)));184 }185#endif186 public class Bar187 {188 protected virtual void MethodToMock()189 {190 throw new ArgumentException("Base method Invoked");191 }192 }193 public class Baz : Bar194 {195 public virtual void MethodToTest()196 {197 MethodToMock();198 }199 }200 internal class FooInternal201 {202 internal FooInternal()203 {204 builder = new StringBuilder();205 }206 public StringBuilder Builder207 {208 get209 {210 return builder;211 }212 }213 private StringBuilder builder;214 }215#endif216 internal abstract class FooAbstract217 {218 protected internal abstract bool TryCreateToken(string literal);219 }220 internal abstract class FooAbstract2 : FooAbstract221 {222 }223 public class Foo224 {225 protected virtual void ExecuteProtected(Foo foo, int arg1)226 {227 throw new NotImplementedException();228 }229 protected virtual void ExecuteProtected(int arg1, Foo foo)230 {231 throw new NotImplementedException();232 }233 protected virtual void ExecuteProtected(int arg1)234 {235 throw new NotImplementedException();236 }237 public virtual void Execute(int arg1)238 {239 ExecuteProtected(arg1);240 }241 public virtual void Execute(int arg1, Foo foo)242 {243 ExecuteProtected(arg1, foo);244 }245 public virtual void Execute(Foo foo, int arg1)246 {247 ExecuteProtected(foo, arg1);248 }249 protected virtual void Load()250 {251 throw new NotImplementedException();252 }253 protected virtual int IntValue254 {255 get256 {257 throw new NotImplementedException();258 }259 }260 public virtual void Init()261 {262 Load();263 }264 public virtual int GetMultipleOfIntValue()265 {266 return IntValue * 2;267 }268 }269 public class FooDerived : Foo270 {271 }272 public class RefTest273 {274 protected virtual void Test(string arg1, ref string asd)275 {276 }277 public void ExecuteTest(ref string asd)278 {279 this.Test("test1", ref asd);280 }281 }282 [TestMethod, TestCategory("Lite"), TestCategory("NonPublic")]283 public void ShouldArrangeNonPublicUsingByRefArgumentWithMatcher()284 {285 var foo = Mock.Create<RefTest>(Behavior.CallOriginal);286 Mock.NonPublic.Arrange(foo, "Test", Arg.Expr.IsAny<string>(), Arg.Expr.Ref(Arg.Expr.IsAny<string>())).MustBeCalled();287 string asd = "asd";288 foo.ExecuteTest(ref asd);289 Mock.Assert(foo);290 }291 [TestMethod, TestCategory("Lite"), TestCategory("NonPublic")]292 public void ShouldArrangeNonPublicUsingByRefArgumentWithConstant()293 {294 int call = 1;295 int callA = 0, callB = 0;296 var foo = Mock.Create<RefTest>(Behavior.CallOriginal);297 Mock.NonPublic.Arrange(foo, "Test", Arg.Expr.IsAny<string>(), Arg.Expr.Ref(Arg.Expr.IsAny<string>())).DoInstead(() => callB = call++);298 Mock.NonPublic.Arrange(foo, "Test", Arg.Expr.IsAny<string>(), Arg.Expr.Ref("asd")).DoInstead(() => callA = call++);299 string input = "asd";300 foo.ExecuteTest(ref input);301 input = "foo";302 foo.ExecuteTest(ref input);303 Assert.Equal(1, callA);304 Assert.Equal(2, callB);305 }306 [TestMethod, TestCategory("Lite"), TestCategory("NonPublic")]307 public void ShouldArrangeNonPublicUsingByRefArgumentAsOutputParameter()308 {309 var foo = Mock.Create<RefTest>(Behavior.CallOriginal);310 Mock.NonPublic.Arrange(foo, "Test", Arg.Expr.IsAny<string>(), Arg.Expr.Out("asd"));311 string input = "";312 foo.ExecuteTest(ref input);313 Assert.Equal("asd", input);314 }315 [TestMethod, TestCategory("Lite"), TestCategory("NonPublic")]316 public void ShouldNotArrangeNonPublicUsingConstantArgumentWhereByRefIsExpected()317 {318 var foo = Mock.Create<RefTest>(Behavior.CallOriginal);319 Assert.Throws<MissingMemberException>(() => Mock.NonPublic.Arrange(foo, "Test", Arg.Expr.IsAny<string>(), "asd"));320 }321 public abstract class WeirdSignature322 {323 protected abstract int Do(int a, string b, ref object c, IEnumerable<int> d);324 protected abstract void Do(bool b);325 protected abstract DateTime Do(DateTime dateTime);326 protected static void Do(int d) { }327 protected static int Do(char e) { return 0; }328 }329 [TestMethod, TestCategory("Lite"), TestCategory("NonPublic")]330 public void ShouldProvideHelpfulExceptionMessageWhenNonPublicMethodIsMissing()331 {332 var foo = Mock.Create<WeirdSignature>();333 var exception = Assert.Throws<MissingMemberException>(() => Mock.NonPublic.Arrange(foo, "Do"));334 var message = exception.Message;335 Assert.Equal(("Method 'Do' with the given signature was not found on type Telerik.JustMock.Tests.NonPublicFixture+WeirdSignature\r\n" +336"Review the available methods in the message below and optionally paste the appropriate arrangement snippet.\r\n" +337"----------\r\n" +338"Method 1: Int32 Do(Int32, System.String, System.Object ByRef, System.Collections.Generic.IEnumerable`1[System.Int32])\r\n" +339"C#: Mock.NonPublic.Arrange<int>(mock, \"Do\", Arg.Expr.IsAny<int>(), Arg.Expr.IsAny<string>(), Arg.Expr.Ref(Arg.Expr.IsAny<object>()), Arg.Expr.IsAny<IEnumerable<int>>());\r\n" +340"VB: Mock.NonPublic.Arrange(Of Integer)(mock, \"Do\", Arg.Expr.IsAny(Of Integer)(), Arg.Expr.IsAny(Of String)(), Arg.Expr.Ref(Arg.Expr.IsAny(Of Object)()), Arg.Expr.IsAny(Of IEnumerable(Of Integer))())\r\n" +341"----------\r\n" +342"Method 2: Void Do(Boolean)\r\n" +343"C#: Mock.NonPublic.Arrange(mock, \"Do\", Arg.Expr.IsAny<bool>());\r\n" +344"VB: Mock.NonPublic.Arrange(mock, \"Do\", Arg.Expr.IsAny(Of Boolean)())\r\n" +345"----------\r\n" +346"Method 3: System.DateTime Do(System.DateTime)\r\n" +347"C#: Mock.NonPublic.Arrange<DateTime>(mock, \"Do\", Arg.Expr.IsAny<DateTime>());\r\n" +348"VB: Mock.NonPublic.Arrange(Of Date)(mock, \"Do\", Arg.Expr.IsAny(Of Date)())\r\n" +349"----------\r\n" +350"Method 4: Void Do(Int32)\r\n" +351"C#: Mock.NonPublic.Arrange(\"Do\", Arg.Expr.IsAny<int>());\r\n" +352"VB: Mock.NonPublic.Arrange(\"Do\", Arg.Expr.IsAny(Of Integer)())\r\n" +353"----------\r\n" +354"Method 5: Int32 Do(Char)\r\n" +355"C#: Mock.NonPublic.Arrange<int>(\"Do\", Arg.Expr.IsAny<char>());\r\n" +356"VB: Mock.NonPublic.Arrange(Of Integer)(\"Do\", Arg.Expr.IsAny(Of Char)())\r\n").Replace("\r\n", Environment.NewLine), message);357 var exception2 = Assert.Throws<MissingMemberException>(() => Mock.NonPublic.Arrange(foo, "Dont"));358 var message2 = exception2.Message;359 Assert.Equal(("Method 'Dont' with the given signature was not found on type Telerik.JustMock.Tests.NonPublicFixture+WeirdSignature\r\n" +360 "No methods or properties found with the given name.\r\n").Replace("\r\n", Environment.NewLine), message2);361 }362 public abstract class NonPublicOverloads363 {364 protected abstract int NotOverloaded(int a, out object b);365 protected abstract int Overloaded(int a);366 protected abstract int Overloaded(string a);367 protected abstract int Prop { set; }368 public int CallNotOverloaded(int a, out object b)369 {370 return NotOverloaded(a, out b);371 }372 public int SetProp373 {...
NonPublicFixture
Using AI Code Generation
1using Telerik.JustMock.Tests;2using NUnit.Framework;3{4 {5 public void Test1()6 {7 var mock = Mock.Create<NonPublicFixture>();8 Mock.Arrange(() => mock.NonPublicMethod()).Returns("test");9 Assert.AreEqual("test", mock.NonPublicMethod());10 }11 }12}
NonPublicFixture
Using AI Code Generation
1using Telerik.JustMock.Tests.NonPublicFixture;2using Telerik.JustMock.Tests;3using System;4using System.Collections.Generic;5using System.Linq;6using System.Text;7using System.Threading.Tasks;8using Telerik.JustMock;9{10 {11 public static string GetNonPublicProperty()12 {13 return "NonPublicProperty";14 }15 public static string GetNonPublicField()16 {17 return "NonPublicField";18 }19 }20}21using Telerik.JustMock.Tests.NonPublicFixture;22using Telerik.JustMock.Tests;23using System;24using System.Collections.Generic;25using System.Linq;26using System.Text;27using System.Threading.Tasks;28using Telerik.JustMock;29{30 {31 public static string GetNonPublicProperty()32 {33 return "NonPublicProperty";34 }35 public static string GetNonPublicField()36 {37 return "NonPublicField";38 }39 }40}41using Telerik.JustMock.Tests.NonPublicFixture;42using Telerik.JustMock.Tests;43using System;44using System.Collections.Generic;45using System.Linq;46using System.Text;47using System.Threading.Tasks;48using Telerik.JustMock;49{50 {51 public static string GetNonPublicProperty()52 {53 return "NonPublicProperty";54 }55 public static string GetNonPublicField()56 {57 return "NonPublicField";58 }59 }60}61using Telerik.JustMock.Tests.NonPublicFixture;62using Telerik.JustMock.Tests;63using System;64using System.Collections.Generic;65using System.Linq;66using System.Text;67using System.Threading.Tasks;68using Telerik.JustMock;69{70 {71 public static string GetNonPublicProperty()72 {73 return "NonPublicProperty";74 }75 public static string GetNonPublicField()76 {77 return "NonPublicField";78 }79 }80}
NonPublicFixture
Using AI Code Generation
1using Telerik.JustMock;2using Telerik.JustMock.Tests;3using Telerik.JustMock.Helpers;4using System;5using System.Collections.Generic;6using System.Linq;7using System.Text;8using System.Threading.Tasks;9{10 {11 public void Test()12 {13 var fixture = new NonPublicFixture();14 fixture.NonPublicMethod();15 }16 }17}18The type or namespace name 'NonPublicFixture' could not be found (are you missing a using directive or an assembly reference?)19using Telerik.JustMock;20using Telerik.JustMock.Tests;21using Telerik.JustMock.Helpers;22using System;23using System.Collections.Generic;24using System.Linq;25using System.Text;26using System.Threading.Tasks;27{28 {29 public void Test()30 {31 var fixture = new Telerik.JustMock.Tests.NonPublicFixture();32 fixture.NonPublicMethod();33 }34 }35}
NonPublicFixture
Using AI Code Generation
1using Telerik.JustMock;2using Telerik.JustMock.Helpers;3using Telerik.JustMock.Tests;4using Xunit;5{6 {7 public void TestMethod1()8 {9 var instance = Mock.Create<NonPublicFixture>();10 Mock.Arrange(() => instance.NonPublicMethod()).Returns(1);11 var result = instance.NonPublicMethod();12 Assert.Equal(1, result);13 }14 }15}
NonPublicFixture
Using AI Code Generation
1using Telerik.JustMock.Tests.NonPublicFixture;2using Telerik.JustMock.Tests.NonPublicFixture.TestClasses;3{4 {5 public void TestNonPublicClass()6 {7 var mock = Mock.Create<NonPublicClass>();8 Mock.Arrange(() => mock.NonPublicMethod()).Returns(1);9 Assert.Equal(1, mock.NonPublicMethod());10 }11 }12}13{14 {15 internal int NonPublicMethod()16 {17 return 0;18 }19 }20}
NonPublicFixture
Using AI Code Generation
1using Telerik.JustMock.Tests;2{3 {4 public NonPublicFixture()5 {6 var mock = Mock.Create<NonPublicFixture>();7 Mock.NonPublic.Arrange<int>(mock, "PrivateMethod").Returns(5);8 var result = mock.NonPublicMethod();9 Assert.AreEqual(5, result);10 }11 private int PrivateMethod()12 {13 return 1;14 }15 public int NonPublicMethod()16 {17 return PrivateMethod();18 }19 }20}21using Telerik.JustMock;22using Telerik.JustMock.Tests;23{24 {25 public NonPublicFixture()26 {27 var mock = Mock.Create<NonPublicFixture>();28 Mock.NonPublic.Arrange<int>(mock, "PrivateMethod").Returns(5);29 var result = mock.NonPublicMethod();30 Assert.AreEqual(5, result);31 }32 private int PrivateMethod()33 {34 return 1;35 }36 public int NonPublicMethod()37 {38 return PrivateMethod();39 }40 }41}
NonPublicFixture
Using AI Code Generation
1using Telerik.JustMock.Tests.NonPublicFixture;2{3 {4 public int PublicProperty { get; set; }5 internal int InternalProperty { get; set; }6 protected int ProtectedProperty { get; set; }7 private int PrivateProperty { get; set; }8 public int PublicMethod() { return 0; }9 internal int InternalMethod() { return 0; }10 protected int ProtectedMethod() { return 0; }11 private int PrivateMethod() { return 0; }12 public int PublicField;13 internal int InternalField;14 protected int ProtectedField;15 private int PrivateField;16 }17}18using System;19using System.Collections.Generic;20using System.Linq;21using System.Text;22using System.Threading.Tasks;23using Telerik.JustMock;24using Telerik.JustMock.Tests.NonPublicFixture;25{26 {27 static void Main(string[] args)28 {29 var instance = Mock.Create<NonPublicFixtureClass>();30 Mock.NonPublic.Arrange<int>(instance, "PrivateProperty").Returns(1);31 Mock.NonPublic.Arrange<int>(instance, "PrivateMethod").Returns(1);32 Mock.NonPublic.Arrange<int>(instance, "PrivateField").Returns(1);33 Mock.NonPublic.Arrange<int>(instance, "ProtectedProperty").Returns(1);34 Mock.NonPublic.Arrange<int>(instance, "ProtectedMethod").Returns(1);35 Mock.NonPublic.Arrange<int>(instance, "ProtectedField").Returns(1);36 Mock.NonPublic.Arrange<int>(instance, "InternalProperty").Returns(1);37 Mock.NonPublic.Arrange<int>(instance, "InternalMethod").Returns(1);38 Mock.NonPublic.Arrange<int>(instance, "InternalField").Returns(1);39 Mock.NonPublic.Arrange<int>(instance, "PublicProperty").Returns(1);40 Mock.NonPublic.Arrange<int>(instance, "PublicMethod").Returns(1);41 Mock.NonPublic.Arrange<int>(instance, "PublicField").Returns(1);42 Console.WriteLine(instance.PublicMethod());43 Console.WriteLine(instance.InternalMethod());44 Console.WriteLine(instance.ProtectedMethod());45 Console.WriteLine(instance.PrivateMethod());
NonPublicFixture
Using AI Code Generation
1using Telerik.JustMock.Tests;2public void TestMethod1()3{4 var fixture = new NonPublicFixture();5 var instance = fixture.CreateInstance<TestClass>();6}7using Telerik.JustMock.Tests;8public void TestMethod1()9{10 var fixture = new NonPublicFixture();11 var instance = fixture.CreateInstance<TestClass>();12}13using Telerik.JustMock.Tests;14public void TestMethod1()15{16 var fixture = new NonPublicFixture();17 var instance = fixture.CreateInstance<TestClass>();18}19using Telerik.JustMock.Tests;20public void TestMethod1()21{22 var fixture = new NonPublicFixture();23 var instance = fixture.CreateInstance<TestClass>();24}25using Telerik.JustMock.Tests;26public void TestMethod1()27{28 var fixture = new NonPublicFixture();29 var instance = fixture.CreateInstance<TestClass>();30}31using Telerik.JustMock.Tests;32public void TestMethod1()33{34 var fixture = new NonPublicFixture();35 var instance = fixture.CreateInstance<TestClass>();36}37using Telerik.JustMock.Tests;38public void TestMethod1()39{40 var fixture = new NonPublicFixture();41 var instance = fixture.CreateInstance<TestClass>();42}43using Telerik.JustMock.Tests;44public void TestMethod1()45{46 var fixture = new NonPublicFixture();47 var instance = fixture.CreateInstance<TestClass>();48}
NonPublicFixture
Using AI Code Generation
1using Telerik.JustMock;2using Telerik.JustMock.Tests;3using NUnit.Framework;4using System;5using System.Collections.Generic;6using System.Linq;7using System.Text;8using System.Threading.Tasks;9{10 {11 public void Test()12 {13 var fixture = new NonPublicFixture();14 fixture.Test();15 }16 }17}
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!!