Best Mockito code snippet using org.mockito.stubbing.Answer
Source:BDDMockito.java
...3 * This program is made available under the terms of the MIT License.4 */5package org.mockito;67import org.mockito.stubbing.Answer;8import org.mockito.stubbing.OngoingStubbing;9import org.mockito.stubbing.Stubber;1011/**12 * Behavior Driven Development style of writing tests uses <b>//given //when //then</b> comments as fundamental parts of your test methods.13 * This is exactly how we write our tests and we warmly encourage you to do so!14 * <p>15 * Start learning about BDD here: <a href="http://en.wikipedia.org/wiki/Behavior_Driven_Development">http://en.wikipedia.org/wiki/Behavior_Driven_Development</a>16 * <p>17 * The problem is that current stubbing api with canonical role of <b>when</b> word does not integrate nicely with <b>//given //when //then</b> comments.18 * It's because stubbing belongs to <b>given</b> component of the test and not to the <b>when</b> component of the test. 19 * Hence {@link BDDMockito} class introduces an alias so that you stub method calls with {@link BDDMockito#given(Object)} method. 20 * Now it really nicely integrates with the <b>given</b> component of a BDD style test! 21 * <p>22 * Here is how the test might look like: 23 * <pre>24 * import static org.mockito.BDDMockito.*;25 * 26 * Seller seller = mock(Seller.class);27 * Shop shop = new Shop(seller);28 * 29 * public void shouldBuyBread() throws Exception {30 * //given 31 * given(seller.askForBread()).willReturn(new Bread());32 * 33 * //when34 * Goods goods = shop.buyBread();35 * 36 * //then37 * assertThat(goods, containBread());38 * } 39 * </pre>40 * 41 * Stubbing voids with throwables:42 * <pre>43 * //given44 * willThrow(new RuntimeException("boo")).given(mock).foo();45 * 46 * //when47 * Result result = systemUnderTest.perform();48 * 49 * //then50 * assertEquals(failure, result);51 * </pre>52 * <p>53 * One of the purposes of BDDMockito is also to show how to tailor the mocking syntax to a different programming style. 54 */55@SuppressWarnings("unchecked")56public class BDDMockito extends Mockito {57 58 /**59 * See original {@link OngoingStubbing}60 */61 public static interface BDDMyOngoingStubbing<T> {62 63 /**64 * See original {@link OngoingStubbing#thenAnswer(Answer)}65 */66 BDDMyOngoingStubbing<T> willAnswer(Answer<?> answer);67 68 /**69 * See original {@link OngoingStubbing#thenReturn(Object)}70 */71 BDDMyOngoingStubbing<T> willReturn(T value);72 73 /**74 * See original {@link OngoingStubbing#thenReturn(Object, Object...)}75 */76 BDDMyOngoingStubbing<T> willReturn(T value, T... values);77 78 /**79 * See original {@link OngoingStubbing#thenThrow(Throwable...)}80 */81 BDDMyOngoingStubbing<T> willThrow(Throwable... throwables);8283 /**84 * See original {@link OngoingStubbing#thenCallRealMethod()}85 */86 BDDMyOngoingStubbing<T> willCallRealMethod();87 }88 89 public static class BDDOngoingStubbingImpl<T> implements BDDMyOngoingStubbing<T> {9091 private final OngoingStubbing<T> mockitoOngoingStubbing;9293 public BDDOngoingStubbingImpl(OngoingStubbing<T> ongoingStubbing) {94 this.mockitoOngoingStubbing = ongoingStubbing;95 }9697 /* (non-Javadoc)98 * @see org.mockitousage.customization.BDDMockito.BDDMyOngoingStubbing#willAnswer(org.mockito.stubbing.Answer)99 */100 public BDDMyOngoingStubbing<T> willAnswer(Answer<?> answer) {101 return new BDDOngoingStubbingImpl<T>(mockitoOngoingStubbing.thenAnswer(answer));102 }103104 /* (non-Javadoc)105 * @see org.mockitousage.customization.BDDMockito.BDDMyOngoingStubbing#willReturn(java.lang.Object)106 */107 public BDDMyOngoingStubbing<T> willReturn(T value) {108 return new BDDOngoingStubbingImpl<T>(mockitoOngoingStubbing.thenReturn(value));109 }110111 /* (non-Javadoc)112 * @see org.mockitousage.customization.BDDMockito.BDDMyOngoingStubbing#willReturn(java.lang.Object, T[])113 */114 public BDDMyOngoingStubbing<T> willReturn(T value, T... values) {115 return new BDDOngoingStubbingImpl<T>(mockitoOngoingStubbing.thenReturn(value, values));116 }117118 /* (non-Javadoc)119 * @see org.mockitousage.customization.BDDMockito.BDDMyOngoingStubbing#willThrow(java.lang.Throwable[])120 */121 public BDDMyOngoingStubbing<T> willThrow(Throwable... throwables) {122 return new BDDOngoingStubbingImpl<T>(mockitoOngoingStubbing.thenThrow(throwables));123 }124125 public BDDMyOngoingStubbing<T> willCallRealMethod() {126 return new BDDOngoingStubbingImpl<T>(mockitoOngoingStubbing.thenCallRealMethod());127 }128 }129 130 /**131 * see original {@link Mockito#when(Object)}132 */133 public static <T> BDDMyOngoingStubbing<T> given(T methodCall) {134 return new BDDOngoingStubbingImpl<T>(Mockito.when(methodCall));135 }136 137 /**138 * See original {@link Stubber}139 */140 public static interface BDDStubber {141 /**142 * See original {@link Stubber#doAnswer(Answer)}143 */144 BDDStubber willAnswer(Answer answer);145 146 /**147 * See original {@link Stubber#doNothing()}148 */149 BDDStubber willNothing();150 151 /**152 * See original {@link Stubber#doReturn(Object)}153 */154 BDDStubber willReturn(Object toBeReturned);155 156 /**157 * See original {@link Stubber#doThrow(Throwable)}158 */159 BDDStubber willThrow(Throwable toBeThrown);160 161 /**162 * See original {@link Stubber#when(Object)}163 */164 <T> T given(T mock);165 }166 167 public static class BDDStubberImpl implements BDDStubber {168169 private final Stubber mockitoStubber;170171 public BDDStubberImpl(Stubber mockitoStubber) {172 this.mockitoStubber = mockitoStubber;173 }174175 /* (non-Javadoc)176 * @see org.mockitousage.customization.BDDMockito.BDDStubber#given(java.lang.Object)177 */178 public <T> T given(T mock) {179 return mockitoStubber.when(mock);180 }181182 /* (non-Javadoc)183 * @see org.mockitousage.customization.BDDMockito.BDDStubber#willAnswer(org.mockito.stubbing.Answer)184 */185 public BDDStubber willAnswer(Answer answer) {186 return new BDDStubberImpl(mockitoStubber.doAnswer(answer));187 }188189 /* (non-Javadoc)190 * @see org.mockitousage.customization.BDDMockito.BDDStubber#willNothing()191 */192 public BDDStubber willNothing() {193 return new BDDStubberImpl(mockitoStubber.doNothing());194 }195196 /* (non-Javadoc)197 * @see org.mockitousage.customization.BDDMockito.BDDStubber#willReturn(java.lang.Object)198 */199 public BDDStubber willReturn(Object toBeReturned) {200 return new BDDStubberImpl(mockitoStubber.doReturn(toBeReturned));201 }202203 /* (non-Javadoc)204 * @see org.mockitousage.customization.BDDMockito.BDDStubber#willThrow(java.lang.Throwable)205 */206 public BDDStubber willThrow(Throwable toBeThrown) {207 return new BDDStubberImpl(mockitoStubber.doThrow(toBeThrown));208 }209 }210 211 /**212 * see original {@link Mockito#doThrow(Throwable)}213 */214 public static BDDStubber willThrow(Throwable toBeThrown) {215 return new BDDStubberImpl(Mockito.doThrow(toBeThrown));216 }217 218 /**219 * see original {@link Mockito#doAnswer(Answer)}220 */221 public static BDDStubber willAnswer(Answer answer) {222 return new BDDStubberImpl(Mockito.doAnswer(answer));223 } 224 225 /**226 * see original {@link Mockito#doNothing()}227 */228 public static BDDStubber willDoNothing() {229 return new BDDStubberImpl(Mockito.doNothing());230 } 231 232 /**233 * see original {@link Mockito#doReturn(Object)}234 */235 public static BDDStubber willReturn(Object toBeReturned) {236 return new BDDStubberImpl(Mockito.doReturn(toBeReturned));
...
Source:InvocationContainerImpl.java
...17import org.mockito.invocation.InvocationContainer;18import org.mockito.invocation.MatchableInvocation;19import org.mockito.mock.MockCreationSettings;20import org.mockito.quality.Strictness;21import org.mockito.stubbing.Answer;22import org.mockito.stubbing.Stubbing;23import org.mockito.stubbing.ValidableAnswer;24@SuppressWarnings("unchecked")25public class InvocationContainerImpl implements InvocationContainer, Serializable {26 private static final long serialVersionUID = -5334301962749537177L;27 private final LinkedList<StubbedInvocationMatcher> stubbed = new LinkedList<>();28 private final DoAnswerStyleStubbing doAnswerStyleStubbing;29 private final RegisteredInvocations registeredInvocations;30 private final Strictness mockStrictness;31 private MatchableInvocation invocationForStubbing;32 public InvocationContainerImpl(MockCreationSettings mockSettings) {33 this.registeredInvocations = createRegisteredInvocations(mockSettings);34 this.mockStrictness = mockSettings.isLenient() ? Strictness.LENIENT : null;35 this.doAnswerStyleStubbing = new DoAnswerStyleStubbing();36 }37 public void setInvocationForPotentialStubbing(MatchableInvocation invocation) {38 registeredInvocations.add(invocation.getInvocation());39 this.invocationForStubbing = invocation;40 }41 public void resetInvocationForPotentialStubbing(MatchableInvocation invocationMatcher) {42 this.invocationForStubbing = invocationMatcher;43 }44 public void addAnswer(Answer answer, Strictness stubbingStrictness) {45 registeredInvocations.removeLast();46 addAnswer(answer, false, stubbingStrictness);47 }48 /** Adds new stubbed answer and returns the invocation matcher the answer was added to. */49 public StubbedInvocationMatcher addAnswer(50 Answer answer, boolean isConsecutive, Strictness stubbingStrictness) {51 Invocation invocation = invocationForStubbing.getInvocation();52 mockingProgress().stubbingCompleted();53 if (answer instanceof ValidableAnswer) {54 ((ValidableAnswer) answer).validateFor(invocation);55 }56 synchronized (stubbed) {57 if (isConsecutive) {58 stubbed.getFirst().addAnswer(answer);59 } else {60 Strictness effectiveStrictness =61 stubbingStrictness != null ? stubbingStrictness : this.mockStrictness;62 stubbed.addFirst(63 new StubbedInvocationMatcher(64 answer, invocationForStubbing, effectiveStrictness));65 }66 return stubbed.getFirst();67 }68 }69 public void addConsecutiveAnswer(Answer answer) {70 addAnswer(answer, true, null);71 }72 Object answerTo(Invocation invocation) throws Throwable {73 return findAnswerFor(invocation).answer(invocation);74 }75 public StubbedInvocationMatcher findAnswerFor(Invocation invocation) {76 synchronized (stubbed) {77 for (StubbedInvocationMatcher s : stubbed) {78 if (s.matches(invocation)) {79 s.markStubUsed(invocation);80 // TODO we should mark stubbed at the point of stubbing, not at the point where81 // the stub is being used82 invocation.markStubbed(new StubInfoImpl(s));83 return s;84 }85 }86 }87 return null;88 }89 /**90 * Sets the answers declared with 'doAnswer' style.91 */92 public void setAnswersForStubbing(List<Answer<?>> answers, Strictness strictness) {93 doAnswerStyleStubbing.setAnswers(answers, strictness);94 }95 public boolean hasAnswersForStubbing() {96 return !doAnswerStyleStubbing.isSet();97 }98 public boolean hasInvocationForPotentialStubbing() {99 return !registeredInvocations.isEmpty();100 }101 public void setMethodForStubbing(MatchableInvocation invocation) {102 invocationForStubbing = invocation;103 assert hasAnswersForStubbing();104 for (int i = 0; i < doAnswerStyleStubbing.getAnswers().size(); i++) {105 addAnswer(106 doAnswerStyleStubbing.getAnswers().get(i),107 i != 0,108 doAnswerStyleStubbing.getStubbingStrictness());109 }110 doAnswerStyleStubbing.clear();111 }112 @Override113 public String toString() {114 return "invocationForStubbing: " + invocationForStubbing;115 }116 public List<Invocation> getInvocations() {117 return registeredInvocations.getAll();118 }119 public void clearInvocations() {120 registeredInvocations.clear();121 }122 /**123 * Stubbings in descending order, most recent first124 */125 public List<Stubbing> getStubbingsDescending() {126 return (List) stubbed;127 }128 /**129 * Stubbings in ascending order, most recent last130 */131 public Collection<Stubbing> getStubbingsAscending() {132 List<Stubbing> result = new LinkedList<>(stubbed);133 Collections.reverse(result);134 return result;135 }136 public Object invokedMock() {137 return invocationForStubbing.getInvocation().getMock();138 }139 private RegisteredInvocations createRegisteredInvocations(MockCreationSettings mockSettings) {140 return mockSettings.isStubOnly()141 ? new SingleRegisteredInvocation()142 : new DefaultRegisteredInvocations();143 }144 public Answer findStubbedAnswer() {145 synchronized (stubbed) {146 for (StubbedInvocationMatcher s : stubbed) {147 if (invocationForStubbing.matches(s.getInvocation())) {148 return s;149 }150 }151 }152 return null;153 }154}...
Answer
Using AI Code Generation
1import org.mockito.stubbing.Answer;2import org.mockito.Mockito;3import static org.mockito.Mockito.when;4import static org.mockito.Mockito.doAnswer;5import static org.mockito.Matchers.anyString;6import static org.mockito.Mockito.verify;7import static org.mockito.Mockito.times;8import static org.mockito.Mockito.verifyNoMoreInteractions;9import static org.mockito.Mockito.verifyZeroInteractions;10import static org.mockito.Mockito.doThrow;11import static org.mockito.Mockito.doNothing;12import static org.mockito.Mockito.doReturn;13import static org.mockito.Mockito.doThrow;14import static org.mockito.Mockito.doCallRealMethod;15import static org.mockito.Matchers.anyInt;16import static org.mockito.Matchers.any;17import static org.mockito.Matchers.anyLong;18import static org.mockito.Matchers.anyDouble;19import static org.mockito.Matchers.anyFloat;20import static org.mockito.Matchers.anyChar;21import static org.mockito.Matchers.anyByte;22import static org.mockito.Matchers.anyShort;23import static org.mockito.Matchers.anyBoolean;24import static org.mockito.Matchers.anyObject;
Answer
Using AI Code Generation
1import org.mockito.stubbing.Answer;2import org.mockito.Mockito;3import static org.mockito.Mockito.mock;4import static org.mockito.Mockito.when;5import static org.mockito.stubbing.OngoingStubbing.thenAnswer;6import static org.mockito.Matchers.anyString;7import static org.mockito.Matchers.anyInt;8import static org.mockito.Matchers.any;9import static org.mockito.Mockito.verify;10import static org.mockito.Mockito.times;11import static org.mockito.Mockito.doReturn;12import static org.mockito.Mockito.doThrow;13import static org.mockito.Mockito.doNothing;14import static org.mockito.Mockito.doAnswer;15import static org.mockito.Mockito.doCallRealMethod;16import static org.mockito.Mockito.verifyNoMoreInteractions;17import static org.mockito.Mockito.verifyZeroInteractions;18import static org.mockito.Mockito.verifyNoMoreInteractions;19import static org.mockito.Mockito.verifyZeroInteractions;20import static org.mockito.Mockito.inOrder;21import static org.mockito.Mockito.never;22import static org.mockito.Mockito.atLeastOnce;23import static org.mockito.Mockito.atLeast;
Answer
Using AI Code Generation
1import org.mockito.stubbing.Answer;2import static org.mockito.Mockito.mock;3import static org.mockito.Mockito.when;4import static org.mockito.Mockito.doAnswer;5import static org.mockito.Mockito.doNothing;6import static org.mockito.Mockito.doThrow;7import static org.mockito.Mockito.doReturn;8import static org.mockito.Mockito.doCallRealMethod;9public class 1 {10 public static void main(String []args) {11 Answer answer = mock(Answer.class);12 when(answer.answer(null)).thenReturn(null);13 doAnswer(answer).when(null).answer(null);14 doNothing().when(null).answer(null);15 doThrow(new RuntimeException()).when(null).answer(null);16 doReturn(null).when(null).answer(null);17 doCallRealMethod().when(null).answer(null);18 }19}
Answer
Using AI Code Generation
1import org.mockito.stubbing.Answer;2import org.mockito.Mockito;3import org.mockito.MockitoAnnotations;4import org.mockito.MockingDetails;5import org.mockito.MockHandler;6import org.mockito.MockCreationSettings;7import org.mockito.MockSettings;8import org.mockito.MockName;9import org.mockito.MockingProgress;10import org.mockito.MockFactory;11import org.mockito.VerificationData;12import org.mockito.VerificationMode;13import org.mockito.VerificationStrategy;14import org.mockito.VerificationAfterDelay;15import org.mockito.VerificationWithTimeout;16import org.mockito.VerificationInOrder;17import org.mockito.VerificationInOrderMode;18import org.mockito.VerificationModeFactory;19import org.mockito.VerificationModeImpl;20import org.mockito.VerificationModeBuilder;21import org.mockito.VerificationModeBuilderImpl;22import org.mockito.VerificationInOrderModeImpl;23import org.mockito.VerificationInOrderModeBuilder;24import org.mockito.VerificationInOrderModeBuilderImpl;25import org.mockito.Verification
Answer
Using AI Code Generation
1import org.mockito.stubbing.Answer;2import org.mockito.invocation.InvocationOnMock;3import static org.mockito.Mockito.*;4import static org.junit.Assert.*;5import org.junit.Test;6public class Test1 {7 public void test() {8 List<String> mockList = mock(List.class);9 when(mockList.get(0)).thenReturn("first");10 assertEquals("first", mockList.get(0));11 assertEquals(null, mockList.get(999));12 }13}
Answer
Using AI Code Generation
1import org.mockito.stubbing.Answer;2import org.mockito.stubbing.Stubber;3import static org.mockito.Mockito.when;4import static org.mockito.Matchers.anyString;5import static org.mockito.Mockito.verify;6import static org.mockito.internal.verification.Times.times;7import static org.mockito.Mockito.doThrow;8import static org.mockito.Mockito.doAnswer;9import static org.mockito.Mockito.doReturn;10import static org.mockito.Mockito.doNothing;11import static org.mockito.Mockito.doCallRealMethod;12import static org.mockito.Matchers.eq;13import static org.mockito.Matchers.anyInt;14import static org.mockito.Matchers.any;15import static org.mockito.Matchers.anyObject;16import static org.mockito.Matchers.anyVararg;17import static org.mockito.Matchers.anyBoolean;18import static org.mockito.Matchers.anyByte;19import static org.mockito.Matchers.anyChar;20import static org.mockito.Matchers.anyDouble;21import static org.mockito.Matchers.anyFloat;22import static org.mockito.Matchers.anyLong;23import static org.mockito.Matchers.anyShort;24import static org.mockito.Matchers.argThat;25import static org
Answer
Using AI Code Generation
1import org.mockito.stubbing.Answer;2import static org.mockito.Mockito.*;3import static org.mockito.Mockito.when;4import static org.mockito.Mockito.mock;5import static org.mockito.Mockito.doAnswer;6import static org.mockito.Mockito.times;7import static org.mockito.Mockito.verify;8import static org.mockito.Mockito.any;9import static org.mockito.Mockito.anyString;10import static org.mockito.Mockito.anyInt;11import static org.mockito.Mockito.anyBoolean;12import static org.mockito.Mockito.anyFloat;13import static org.mockito.Mockito.anyDouble;14import static org.mockito.Mockito.anyLong;15import static org.mockito.Mockito.anyShort;16import static org.mockito.Mockito.anyByte;17import static org.mockito.Mockito.anyChar;18import static org.mockito.Mockito.anyList;19import static org.mockito.Mockito.anyMap;20import static org.mockito.Mockito.anySet;21import static org.mockito.Mockito.anyCollection;22import static org.mockito.Mockito.anyObject;23import static org.mockito.Mockito.anyVararg;24import java.util.*;25import java.util.concurrent.*;26import java.util.function.*;27import java.util.stream.*;28import java.util
Answer
Using AI Code Generation
1import org.mockito.stubbing.Answer;2public class AnswerDemo {3 public static void main(String[] args) {4 List list = mock(List.class);5 when(list.get(0)).thenAnswer(new Answer<String>() {6 public String answer(InvocationOnMock invocation) throws Throwable {7 return "first";8 }9 });10 when(list.get(1)).thenAnswer(new Answer<String>() {11 public String answer(InvocationOnMock invocation) throws Throwable {12 return "second";13 }14 });15 System.out.println(list.get(0));16 System.out.println(list.get(1));17 }18}
Answer
Using AI Code Generation
1package org.mockito.stubbing;2public class Answer{3 public void doSomething(){4 System.out.println("Answer class from org.mockito.stubbing package");5 }6}7package org.mockito;8public class Answer{9 public void doSomething(){10 System.out.println("Answer class from org.mockito package");11 }12}13package org.mockito.stubbing;14public class Answer{15 public void doSomething(){16 System.out.println("Answer class from org.mockito.stubbing package");17 }18}19package org.mockito;20public class Answer{21 public void doSomething(){22 System.out.println("Answer class from org.mockito package");23 }24}25package org.mockito.stubbing;26public class Answer{27 public void doSomething(){28 System.out.println("Answer class from org.mockito.stubbing package");29 }30}31package org.mockito;32public class Answer{33 public void doSomething(){34 System.out.println("Answer class from org.mockito package");35 }36}37package org.mockito.stubbing;38public class Answer{39 public void doSomething(){40 System.out.println("Answer class from org.mockito.stubbing package");41 }42}43package org.mockito;44public class Answer{45 public void doSomething(){46 System.out.println("Answer class from org.mockito package");47 }48}49package org.mockito.stubbing;50public class Answer{51 public void doSomething(){52 System.out.println("Answer class from org.mockito.stubbing package");53 }54}55package org.mockito;56public class Answer{57 public void doSomething(){58 System.out.println("Answer class from org.mockito package");59 }60}61package org.mockito.stubbing;62public class Answer{63 public void doSomething(){64 System.out.println("Answer class from org.mockito.stubbing package");65 }66}67package org.mockito;68public class Answer{69 public void doSomething(){70 System.out.println("Answer class from org.mockito
Answer
Using AI Code Generation
1package org.mockito.stubbing;2import org.mockito.Mockito;3import org.mockito.stubbing.Answer;4public class Answer1 {5 public static void main(String[] args) {6 DummyClass mock = Mockito.mock(DummyClass.class);7 Mockito.when(mock.getUniqueId()).thenAnswer(new Answer<Integer>() {8 public Integer answer(InvocationOnMock invocation) {9 Object[] args = invocation.getArguments();10 Object mock = invocation.getMock();11 return 45;12 }13 });14 System.out.println("mock.getUniqueId(): " + mock.getUniqueId());15 }16}17package org.mockito.invocation;18import org.mockito.Mockito;19import org.mockito.invocation.Answer;20public class Answer2 {21 public static void main(String[] args) {22 DummyClass mock = Mockito.mock(DummyClass.class);23 Mockito.when(mock.getUniqueId()).thenAnswer(new Answer<Integer>() {24 public Integer answer(InvocationOnMock invocation) {25 Object[] args = invocation.getArguments();26 Object mock = invocation.getMock();27 return 45;28 }29 });30 System.out.println("mock.getUniqueId(): " + mock.getUniqueId());31 }32}33package org.mockito.stubbing;34import org.mockito.Mockito;35import org.mockito.stubbing.Answer;36public class Answer3 {37 public static void main(String[] args) {38 DummyClass mock = Mockito.mock(DummyClass.class);39 Mockito.when(mock.getUniqueId()).thenAnswer(new Answer<Integer>() {40 public Integer answer(InvocationOnMock invocation) {41 Object[] args = invocation.getArguments();42 Object mock = invocation.getMock();43 return 45;44 }45 });46 System.out.println("mock.getUniqueId(): " + mock.getUniqueId());47 }48}49package org.mockito.invocation;50import org.mockito.Mockito;51import org.mockito.invocation.Answer;52public class Answer4 {
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!!