How to use ExtendedEmbedder class of net.serenitybdd.jbehave.embedders package

Best Serenity jBehave code snippet using net.serenitybdd.jbehave.embedders.ExtendedEmbedder

Source:SerenityReportingRunner.java Github

copy

Full Screen

...8import net.serenitybdd.core.exceptions.SerenityManagedException;9import net.serenitybdd.jbehave.SerenityJBehaveSystemProperties;10import net.serenitybdd.jbehave.SerenityStories;11import net.serenitybdd.jbehave.annotations.Metafilter;12import net.serenitybdd.jbehave.embedders.ExtendedEmbedder;13import net.serenitybdd.jbehave.embedders.monitors.ReportingEmbedderMonitor;14import net.thucydides.core.guice.Injectors;15import net.thucydides.core.steps.StepEventBus;16import net.thucydides.core.util.EnvironmentVariables;17import org.codehaus.plexus.util.StringUtils;18import org.jbehave.core.ConfigurableEmbedder;19import org.jbehave.core.configuration.Configuration;20import org.jbehave.core.embedder.Embedder;21import org.jbehave.core.embedder.PerformableTree;22import org.jbehave.core.embedder.PerformableTree.RunContext;23import org.jbehave.core.failures.BatchFailures;24import org.jbehave.core.model.Story;25import org.jbehave.core.reporters.StoryReporterBuilder;26import org.jbehave.core.steps.CandidateSteps;27import org.jbehave.core.steps.InjectableStepsFactory;28import org.jbehave.core.steps.NullStepMonitor;29import org.jbehave.core.steps.StepMonitor;30import org.junit.runner.Description;31import org.junit.runner.Runner;32import org.junit.runner.notification.RunNotifier;33import org.slf4j.Logger;34import org.slf4j.LoggerFactory;35import java.lang.reflect.InvocationTargetException;36import java.lang.reflect.Method;37import java.util.*;38import java.util.regex.Pattern;39import java.util.stream.Collectors;40import java.util.stream.Stream;41public class SerenityReportingRunner extends Runner {42 private List<Description> storyDescriptions;43 private ExtendedEmbedder configuredEmbedder;44 private List<String> storyPaths;45 private Configuration configuration;46 private Description description;47 List<CandidateSteps> candidateSteps;48 private final ConfigurableEmbedder configurableEmbedder;49 private final Class<? extends ConfigurableEmbedder> testClass;50 private final EnvironmentVariables environmentVariables;51 private static final Logger LOGGER = LoggerFactory.getLogger(SerenityReportingRunner.class);52 private boolean runningInMaven;53 @SuppressWarnings("unchecked")54 public SerenityReportingRunner(Class<? extends ConfigurableEmbedder> testClass) throws Throwable {55 this(testClass, testClass.newInstance());56 }57 public SerenityReportingRunner(Class<? extends ConfigurableEmbedder> testClass,58 ConfigurableEmbedder embedder) {59 this.configurableEmbedder = embedder;60 ExtendedEmbedder extendedEmbedder = new ExtendedEmbedder(this.configurableEmbedder.configuredEmbedder());61 extendedEmbedder.getEmbedderMonitor().subscribe(new ReportingEmbedderMonitor(62 ((SerenityStories) embedder).getSystemConfiguration(), extendedEmbedder));63 this.configurableEmbedder.useEmbedder(extendedEmbedder);64 this.testClass = testClass;65 this.environmentVariables = environmentVariablesFrom(configurableEmbedder);66 }67 protected List<Description> getDescriptions() {68 if (storyDescriptions == null) {69 storyDescriptions = buildDescriptionFromStories();70 }71 return storyDescriptions;72 }73 protected Configuration getConfiguration() {74 if (configuration == null) {75 configuration = getConfiguredEmbedder().configuration();76 }77 return configuration;78 }79 public ExtendedEmbedder getConfiguredEmbedder() {80 if (configuredEmbedder == null) {81 configuredEmbedder = (ExtendedEmbedder) configurableEmbedder.configuredEmbedder();82 }83 return configuredEmbedder;84 }85 List<String> getStoryPaths() {86 if ((storyPaths == null) || (storyPaths.isEmpty())) {87 storyPaths = storyPathsFromRunnerClass();88 }89 return storyPaths;90 }91 private List<String> storyPathsFromRunnerClass() {92 try {93 List<String> storyPaths = new StoryPathsExtractor(configurableEmbedder).getStoryPaths();94 String storyFilter = getStoryFilterFrom(configurableEmbedder);95 return storyPaths.stream()96 .filter(story -> story.matches(storyFilter))97 .collect(Collectors.toList());98 } catch (Throwable e) {99 LOGGER.error("Could not load story paths", e);100 return Collections.emptyList();101 }102 }103 private String getStoryFilterFrom(ConfigurableEmbedder embedder) {104 String defaultStoryFilter = environmentVariables.getProperty(SerenityJBehaveSystemProperties.STORY_FILTER.getName(), ".*");105 Optional<Method> getStoryFilter = Arrays.stream(embedder.getClass().getMethods())106 .filter(method -> method.getName().equals("getStoryFilter"))107 .findFirst();108 if (getStoryFilter.isPresent()) {109 try {110 Optional<Object> storyFilterValue = Optional.ofNullable(getStoryFilter.get().invoke(embedder));111 return storyFilterValue.orElse(defaultStoryFilter).toString();112 } catch (IllegalAccessException | InvocationTargetException e) {113 LOGGER.warn("Could not invoke getStoryFilter() method on {}", embedder, e);114 }115 }116 return defaultStoryFilter;117 }118 private EnvironmentVariables environmentVariablesFrom(ConfigurableEmbedder configurableEmbedder) {119 if (configurableEmbedder instanceof SerenityStories) {120 return ((SerenityStories) configurableEmbedder).getEnvironmentVariables();121 } else {122 return Injectors.getInjector().getProvider(EnvironmentVariables.class).get();123 }124 }125 @Override126 public Description getDescription() {127 if (description == null) {128 description = Description.createSuiteDescription(configurableEmbedder.getClass());129 for (Description childDescription : getDescriptions()) {130 description.addChild(childDescription);131 }132 }133 return description;134 }135 private int testCount = 0;136 @Override137 public int testCount() {138 if (testCount == 0) {139 testCount = countStories();140 }141 return testCount;142 }143 @Override144 public void run(RunNotifier notifier) {145 beforeStoriesRun(getConfiguredEmbedder());146 getConfiguredEmbedder().embedderControls().doIgnoreFailureInView(getIgnoreFailuresInView());147 getConfiguredEmbedder().embedderControls().doIgnoreFailureInStories(getIgnoreFailuresInStories());148 getConfiguredEmbedder().embedderControls().useStoryTimeoutInSecs(getStoryTimeoutInSecs());149 getConfiguredEmbedder().embedderControls().useStoryTimeouts(getStoryTimeout());150 getConfiguredEmbedder().embedderControls().useThreads(getThreadCount());151 if (metaFiltersAreDefined()) {152 getConfiguredEmbedder().useMetaFilters(getMetaFilters());153 }154// if (!isRunningInMaven() && !isRunningInGradle()) {155 JUnitScenarioReporter junitReporter = new JUnitScenarioReporter(notifier, testCount(), getDescription(),156 getConfiguredEmbedder().configuration().keywords());157 // tell the reporter how to handle pending steps158 junitReporter.usePendingStepStrategy(getConfiguration().pendingStepStrategy());159 JUnitReportingRunner.recommendedControls(getConfiguredEmbedder());160 addToStoryReporterFormats(junitReporter);161// }162 try {163 getConfiguredEmbedder().runStoriesAsPaths(getStoryPaths());164 } catch (Throwable e) {165 throw new SerenityManagedException(e);166 } finally {167 getConfiguredEmbedder().generateCrossReference();168 }169 shutdownTestSuite();170 }171 private boolean isRunningInGradle() {172 return Stream.of(new Exception().getStackTrace()).anyMatch(elt -> elt.getClassName().startsWith("org.gradle"));173 }174 /**175 * Override this method to add custom configuration to the JBehave embedder object.176 *177 * @param configuredEmbedder178 */179 public void beforeStoriesRun(ExtendedEmbedder configuredEmbedder) {180 }181 private void shutdownTestSuite() {182 StepEventBus.getEventBus().testSuiteFinished();183 }184 List<CandidateSteps> getCandidateSteps() {185 if (candidateSteps == null) {186 StepMonitor originalStepMonitor = createCandidateStepsWithNoMonitor();187 createCandidateStepsWith(originalStepMonitor);188 }189 return candidateSteps;190 }191 private void createCandidateStepsWith(StepMonitor stepMonitor) {192 // reset step monitor and recreate candidate steps193 getConfiguration().useStepMonitor(stepMonitor);194 candidateSteps = buildCandidateSteps();195 candidateSteps.forEach(196 step -> step.configuration().useStepMonitor(stepMonitor)197 );198 }199 private StepMonitor createCandidateStepsWithNoMonitor() {200 StepMonitor usedStepMonitor = getConfiguration().stepMonitor();201 createCandidateStepsWith(new NullStepMonitor());202 return usedStepMonitor;203 }204 private List<CandidateSteps> buildCandidateSteps() {205 List<CandidateSteps> candidateSteps;206 InjectableStepsFactory stepsFactory = configurableEmbedder207 .stepsFactory();208 if (stepsFactory != null) {209 candidateSteps = stepsFactory.createCandidateSteps();210 } else {211 Embedder embedder = getConfiguredEmbedder();212 candidateSteps = embedder.candidateSteps();213 if (candidateSteps == null || candidateSteps.isEmpty()) {214 candidateSteps = embedder.stepsFactory().createCandidateSteps();215 }216 }217 return candidateSteps;218 }219 private void addToStoryReporterFormats(JUnitScenarioReporter junitReporter) {220 StoryReporterBuilder storyReporterBuilder = getConfiguration().storyReporterBuilder();221 StoryReporterBuilder.ProvidedFormat junitReportFormat222 = new StoryReporterBuilder.ProvidedFormat(junitReporter);223 storyReporterBuilder.withFormats(junitReportFormat);224 }225 private List<Description> buildDescriptionFromStories() {226 List<CandidateSteps> candidateSteps = getCandidateSteps();227 JUnitDescriptionGenerator descriptionGenerator = new JUnitDescriptionGenerator(candidateSteps, getConfiguration());228 List<Description> storyDescriptions = new ArrayList<>();229 addSuite(storyDescriptions, "BeforeStories");230 PerformableTree performableTree = createPerformableTree(candidateSteps, getStoryPaths());231 storyDescriptions.addAll(descriptionGenerator.createDescriptionFrom(performableTree));232 addSuite(storyDescriptions, "AfterStories");233 return storyDescriptions;234 }235 private int countStories() {236 JUnitDescriptionGenerator descriptionGenerator = new JUnitDescriptionGenerator(getCandidateSteps(), getConfiguration());237 return descriptionGenerator.getTestCases() + beforeAndAfterStorySteps();238 }239 private int beforeAndAfterStorySteps() {240 return 2;241 }242 private PerformableTree createPerformableTree(List<CandidateSteps> candidateSteps, List<String> storyPaths) {243 ExtendedEmbedder configuredEmbedder = this.getConfiguredEmbedder();244 configuredEmbedder.useMetaFilters(getMetaFilters());245 BatchFailures failures = new BatchFailures(configuredEmbedder.embedderControls().verboseFailures());246 PerformableTree performableTree = configuredEmbedder.performableTree();247 RunContext context = performableTree.newRunContext(getConfiguration(), candidateSteps,248 configuredEmbedder.embedderMonitor(), configuredEmbedder.metaFilter(), failures);249 performableTree.addStories(context, configuredEmbedder.storyManager().storiesOfPaths(storyPaths));250 return performableTree;251 }252 private void addSuite(List<Description> storyDescriptions, String name) {253 storyDescriptions.add(Description.createTestDescription(Object.class,254 name));255 }256 private boolean metaFiltersAreDefined() {257 String metaFilters = getMetafilterSetting();...

Full Screen

Full Screen

Source:ExtendedEmbedder.java Github

copy

Full Screen

...15 * User: YamStranger16 * Date: 3/25/1617 * Time: 12:02 AM18 */19public class ExtendedEmbedder extends Embedder {20 final Embedder embedder;21 final Map<String, Story> stories = new ConcurrentHashMap<>();22 public ExtendedEmbedder(Embedder embedder) {23 this.embedder = embedder;24 this.embedder.useEmbedderMonitor(new CompositeEmbedderMonitor(25 embedder.embedderMonitor()!=null?embedder.embedderMonitor():embedderMonitor));26 }27 public CompositeEmbedderMonitor getEmbedderMonitor() {28 return (CompositeEmbedderMonitor) this.embedder.embedderMonitor();29 }30 public void registerStory(final String path, final Story story) {31 this.stories.put(path, story);32 }33 public Story findStory(final String path){34 return this.stories.get(path);35 }36 @Override...

Full Screen

Full Screen

Source:ReportingEmbedderMonitor.java Github

copy

Full Screen

1package net.serenitybdd.jbehave.embedders.monitors;2import net.serenitybdd.core.di.WebDriverInjectors;3import net.serenitybdd.jbehave.SerenityReporter;4import net.serenitybdd.jbehave.embedders.ExtendedEmbedder;5import net.thucydides.core.guice.Injectors;6import net.thucydides.core.util.EnvironmentVariables;7import net.thucydides.core.webdriver.DriverConfiguration;8import org.jbehave.core.embedder.EmbedderControls;9import org.jbehave.core.embedder.EmbedderMonitor;10import org.jbehave.core.embedder.MetaFilter;11import org.jbehave.core.failures.BatchFailures;12import org.jbehave.core.model.*;13import org.jbehave.core.reporters.ReportsCount;14import org.slf4j.Logger;15import org.slf4j.LoggerFactory;16import java.io.File;17import java.util.Collections;18import java.util.List;19import java.util.Properties;20import java.util.Set;21import java.util.concurrent.ConcurrentHashMap;22import java.util.concurrent.ExecutorService;23/**24 * User: YamStranger25 * Date: 3/25/1626 * Time: 6:35 PM27 */28public class ReportingEmbedderMonitor implements EmbedderMonitor {29 private static final Logger logger = LoggerFactory.getLogger(ReportingEmbedderMonitor.class);30 private SerenityReporter reporter;31 private ExtendedEmbedder embedder;32 private final DriverConfiguration configuration;33 private final Set<String> processedStories=Collections.newSetFromMap(new ConcurrentHashMap<String, Boolean>());34 public ReportingEmbedderMonitor(final ExtendedEmbedder embedder) {35 this(configuration(), embedder);36 }37 public ReportingEmbedderMonitor(final DriverConfiguration configuration,38 final ExtendedEmbedder embedder) {39 this.configuration = configuration;40 this.embedder = embedder;41 }42 @Override43 public void runningEmbeddable(String name) {44 }45 @Override46 public void embeddableFailed(String name, Throwable cause) {47 }48 @Override49 public void embeddableNotConfigurable(String name) {50 }51 @Override52 public void embeddablesSkipped(List<String> classNames) {...

Full Screen

Full Screen

ExtendedEmbedder

Using AI Code Generation

copy

Full Screen

1import net.serenitybdd.jbehave.embedders.ExtendedEmbedder;2import net.thucydides.core.ThucydidesSystemProperty;3import net.thucydides.core.util.EnvironmentVariables;4import net.thucydides.core.util.SystemEnvironmentVariables;5import net.thucydides.core.webdriver.Configuration;6import java.io.File;7import java.util.List;8public class SerenityEmbedder extends ExtendedEmbedder {9 private final EnvironmentVariables environmentVariables;10 private final Configuration configuration;11 public SerenityEmbedder() {12 environmentVariables = SystemEnvironmentVariables.createEnvironmentVariables();13 configuration = new Configuration();14 configuration.setEnvironmentVariables(environmentVariables);15 configuration.setOutputDirectory(new File(ThucydidesSystemProperty.WEBDRIVER_BASE_DIR.from(environmentVariables, "target/site/serenity")));16 }17 public Configuration configuration() {18 return configuration;19 }20 public List<String> storyPaths() {21 return new SerenityStoryFinder().findPaths();22 }23}24package net.serenitybdd.jbehave.embedders;25import net.serenitybdd.jbehave.SerenityStory;26import net.thucydides.core.ThucydidesSystemProperty;27import net.thucydides.core.util.EnvironmentVariables;28import net.thucydides.core.util.SystemEnvironmentVariables;29import org.jbehave.core.io.StoryFinder;30import java.io.File;31import java.util.ArrayList;32import java.util.List;33public class SerenityStoryFinder extends StoryFinder {34 private final EnvironmentVariables environmentVariables;35 public SerenityStoryFinder() {36 environmentVariables = SystemEnvironmentVariables.createEnvironmentVariables();37 }38 public List<String> findPaths() {39 List<String> storyPaths = new ArrayList<>();40 String storyLocation = ThucydidesSystemProperty.WEBDRIVER_BASE_DIR.from(environmentVariables, "target/site/serenity");41 storyPaths.add(storyLocation + File.separator + SerenityStory.class.getName().replace(".", File.separator) + ".story");42 return storyPaths;43 }44}

Full Screen

Full Screen

ExtendedEmbedder

Using AI Code Generation

copy

Full Screen

1import net.serenitybdd.jbehave.embedders.ExtendedEmbedder;2import net.serenitybdd.jbehave.SerenityReporter;3import net.thucydides.core.ThucydidesSystemProperty;4import net.thucydides.core.reports.json.JSONTestOutcomeReporter;5import net.thucydides.core.reports.xml.XMLTestOutcomeReporter;6import net.thucydides.core.util.EnvironmentVariables;7import net.thucydides.core.util.MockEnvironmentVariables;8import org.jbehave.core.configuration.Configuration;9import org.jbehave.core.configuration.Keywords;10import org.jbehave.core.configuration.MostUsefulConfiguration;11import org.jbehave.core.embedder.Embedder;12import org.jbehave.core.embedder.EmbedderControls;13import org.jbehave.core.embedder.MetaFilter;14import org.jbehave.core.embedder.NullEmbedderMonitor;15import org.jbehave.core.embedder.StoryControls;16import org.jbehave.core.i18n.LocalizedKeywords;17import org.jbehave.core.io.LoadFromClasspath;18import org.jbehave.core.io.StoryLoader;19import org.jbehave.core.junit.AnnotatedEmbedderRunner;20import org.jbehave.core.junit.JUnitStory;21import org.jbehave.core.junit.JUnitStoryReporter;22import org.jbehave.core.junit.JUnitStoryRunner;23import org.jbehave.core.reporters.*;24import org.jbehave.core.steps.InjectableStepsFactory;25import org.jbehave.core.steps.InstanceStepsFactory;26import org.junit.runner.RunWith;27import java.io.File;28import java.io.IOException;29import java.util.ArrayList;30import java.util.Arrays;31import java.util.List;32import java.util.Properties;33import static net.thucydides.core.ThucydidesSystemProperty.*;34@RunWith(AnnotatedEmbedderRunner.class)35public class JBehaveRunner extends ExtendedEmbedder {36 public JBehaveRunner() throws IOException {37 EmbedderControls embedderControls = configuredEmbedder().embedderControls();38 embedderControls.doIgnoreFailureInStories(false);39 embedderControls.doIgnoreFailureInView(true);40 embedderControls.doVerboseFailures(true);41 embedderControls.doVerboseFiltering(true);42 embedderControls.useThreads(1);43 embedderControls.doSkipScenariosAfterFailure(true);44 embedderControls.doIgnoreFailureInStories(false);45 embedderControls.doIgnoreFailureInView(true);46 embedderControls.doVerboseFailures(true);

Full Screen

Full Screen

ExtendedEmbedder

Using AI Code Generation

copy

Full Screen

1import net.serenitybdd.jbehave.embedders.serene.ExtendedEmbedder;2public class SerenityRunner extends ExtendedEmbedder {3 public SerenityRunner() {4 configuredEmbedder().embedderControls()5 .doIgnoreFailureInStories(false)6 .doIgnoreFailureInView(false)7 .doGenerateViewAfterStories(true)8 .doVerboseFailures(true)9 .useThreads(1)10 .useStoryTimeoutInSecs(60);11 }12}

Full Screen

Full Screen

ExtendedEmbedder

Using AI Code Generation

copy

Full Screen

1 protected Embedder configuredEmbedder() {2 return new ExtendedEmbedder();3 }4}5public class SearchGoogleSteps {6 SearchGoogle searchGoogle;7 @Given("I am on the home page")8 public void givenIAmOnTheHomePage() {9 searchGoogle.openGooglePage();10 }11 @When("I search for '$keyword'")12 public void whenISearchFor(String keyword) {13 searchGoogle.searchFor(keyword);14 }15 @Then("I should see search results")16 public void thenIShouldSeeSearchResults() {17 searchGoogle.verifySearchResults();18 }19}20public class SearchGooglePage extends PageObject {21 @FindBy(name = "q")22 private WebElementFacade searchBox;23 @FindBy(name = "btnK")24 private WebElementFacade searchButton;25 private WebElementFacade searchResults;26 public void searchFor(String keyword) {27 searchBox.typeAndEnter(keyword);28 searchButton.click();29 }30 public void verifySearchResults() {31 searchResults.waitUntilVisible();32 }33}

Full Screen

Full Screen

ExtendedEmbedder

Using AI Code Generation

copy

Full Screen

1public class ExtendedEmbedder extends SerenityReportingEmbedder {2 private final static Logger LOG = LoggerFactory.getLogger(ExtendedEmbedder.class);3 public void runStoriesAsPaths(List<String> storyPaths) {4 try {5 super.runStoriesAsPaths(storyPaths);6 } catch (Throwable e) {7 LOG.error("Error in ExtendedEmbedder", e);8 }9 }10 public void runStoriesWithResults(String storyPath, StoryReporterBuilder storyReporterBuilder, MetaFilter filter) {11 try {12 super.runStoriesWithResults(storyPath, storyReporterBuilder, filter);13 } catch (Throwable e) {14 LOG.error("Error in ExtendedEmbedder", e);15 }16 }17 protected void runStoriesWithResults(List<String> storyPaths, StoryReporterBuilder storyReporterBuilder, MetaFilter filter) {18 try {19 super.runStoriesWithResults(storyPaths, storyReporterBuilder, filter);20 } catch (Throwable e) {21 LOG.error("Error in ExtendedEmbedder", e);22 }23 }24 public void generateReportsView() {25 try {26 super.generateReportsView();27 } catch (Throwable e) {28 LOG.error("Error in ExtendedEmbedder", e);29 }30 }31 protected void generateReportsViewFor(List<Story> stories, StoryReporterBuilder storyReporterBuilder, MetaFilter filter) {32 try {33 super.generateReportsViewFor(stories, storyReporterBuilder, filter);34 } catch (Throwable e) {35 LOG.error("Error in ExtendedEmbedder", e);36 }37 }38 protected void generateReportsViewFor(List<Story> stories, StoryReporterBuilder storyReporterBuilder, MetaFilter filter, StoryControls storyControls, StoryParser storyParser) {39 try {40 super.generateReportsViewFor(stories, storyReporterBuilder, filter, storyControls, storyParser);41 } catch (Throwable e) {42 LOG.error("Error in ExtendedEmbedder", e);43 }44 }45 public void run() {46 try {47 super.run();48 } catch (Throwable e) {49 LOG.error("Error in ExtendedEmbedder", e);50 }51 }

Full Screen

Full Screen

ExtendedEmbedder

Using AI Code Generation

copy

Full Screen

1package net.serenitybdd.jbehave;2import net.serenitybdd.jbehave.embedders.ExtendedEmbedder;3import net.serenitybdd.jbehave.runners.ExtendedEmbedderRunner;4import net.thucydides.core.annotations.Managed;5import net.thucydides.core.annotations.Steps;6import net.thucydides.core.annotations.Title;7import net.thucydides.core.annotations.WithTag;8import net.thucydides.core.annotations.WithTags;9import net.thucydides.core.annotations.WithTagValuesOf;10import net.thucydides.core.steps.ScenarioSteps;11import net.thucydides.core.util.EnvironmentVariables;12import net.thucydides.core.util.SystemEnvironmentVariables;13import net.thucydides.core.webdriver.WebDriverFacade;14import org.jbehave.core.annotations.AfterStory;15import org.jbehave.core.annotations.BeforeStory;16import org.jbehave.core.annotations.Given;17import org.jbehave.core.annotations.Then;18import org.jbehave.core.annotations.When;19import org.jbehave.core.embedder.Embedder;20import org.jbehave.core.embedder.StoryControls;21import org.jbehave.core.embedder.StoryManager;22import org.jbehave.core.embedder.StoryTimeouts;23import org.jbehave.core.embedder.executors.SameThreadExecutors;24import org.jbehave.core.embedder.executors.SameThreadExecutors.SameThreadExecutorService;25import org.jbehave.core.embedder.executors.SameThreadExecutors.SameThreadScheduledExecutorService;26import org.jbehave.core.embedder.monitoring.NullStoryReporter;27import org.jbehave.core.embedder.monitoring.PrintStreamStepMonitor;28import org.jbehave.core.embedder.performers.NullStoryPerformer;29import org.jbehave.core.embedder.reporters.NullStoryReporter;30import org.jbehave.core.embedder.reporters.StoryReporterBuilder;31import org.jbehave.core.io.LoadFromClasspath;32import org.jbehave.core.io.StoryFinder;33import org.jbehave.core.junit.JUnitStory;34import org.jbehave.core.junit.JUnitStoryReporter;35import org.jbehave.core.junit.JUnitStoryRunner;36import org.jbehave.core.junit.JUnitStories;37import org.j

Full Screen

Full Screen
copy
1public class Hashtable<K,V> extends Dictionary<K,V> implements Map<K,V>, Cloneable, Serializable { ... }23public class HashMap<K,V> extends AbstractMap<K,V> implements Map<K,V>, Cloneable, Serializable { ... }4
Full Screen

Automation Testing Tutorials

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.

LambdaTest Learning Hubs:

YouTube

You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.

Try LambdaTest Now !!

Get 100 minutes of automation test minutes FREE!!

Next-Gen App & Browser Testing Cloud

Was this article helpful?

Helpful

NotHelpful