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