Best JGiven code snippet using com.tngtech.jgiven.impl.Config.Config
Source:MockScenarioModelBuilder.java
...7import com.google.common.collect.ImmutableSet;8import com.google.common.collect.Iterables;9import com.tngtech.jgiven.annotation.*;10import com.tngtech.jgiven.attachment.Attachment;11import com.tngtech.jgiven.config.AbstractJGivenConfiguration;12import com.tngtech.jgiven.config.ConfigurationUtil;13import com.tngtech.jgiven.config.DefaultConfiguration;14import com.tngtech.jgiven.config.TagConfiguration;15import com.tngtech.jgiven.exception.JGivenWrongUsageException;16import com.tngtech.jgiven.format.ObjectFormatter;17import com.tngtech.jgiven.impl.Config;18import com.tngtech.jgiven.impl.ScenarioModelBuilder;19import com.tngtech.jgiven.impl.util.AssertionUtil;20import com.tngtech.jgiven.impl.util.WordUtil;21import com.tngtech.jgiven.report.model.*;22import xyz.multicatch.mockgiven.core.annotations.as.AsProviderFactory;23import xyz.multicatch.mockgiven.core.annotations.caseas.CaseAsFactory;24import xyz.multicatch.mockgiven.core.annotations.caseas.CaseAsProviderFactory;25import xyz.multicatch.mockgiven.core.annotations.description.AnnotatedDescriptionFactory;26import xyz.multicatch.mockgiven.core.annotations.description.DescriptionData;27import xyz.multicatch.mockgiven.core.annotations.description.DescriptionQueue;28import xyz.multicatch.mockgiven.core.annotations.description.InlineWithNext;29import xyz.multicatch.mockgiven.core.annotations.tag.AnnotationTagExtractor;30import xyz.multicatch.mockgiven.core.annotations.tag.AnnotationTagUtils;31import xyz.multicatch.mockgiven.core.resources.TextResourceProvider;32import xyz.multicatch.mockgiven.core.scenario.cases.CaseDescription;33import xyz.multicatch.mockgiven.core.scenario.cases.CaseDescriptionFactory;34import xyz.multicatch.mockgiven.core.scenario.cases.ExtendedScenarioCaseModel;35import xyz.multicatch.mockgiven.core.scenario.methods.DescriptionFactory;36import xyz.multicatch.mockgiven.core.scenario.methods.arguments.ArgumentUtils;37import xyz.multicatch.mockgiven.core.scenario.methods.arguments.ParameterFormatterFactory;38import xyz.multicatch.mockgiven.core.scenario.methods.arguments.ParameterFormatterUtils;39import xyz.multicatch.mockgiven.core.scenario.state.CurrentScenarioState;40import xyz.multicatch.mockgiven.core.scenario.steps.ExtendedStepModel;41import xyz.multicatch.mockgiven.core.scenario.steps.StepCommentFactory;42import xyz.multicatch.mockgiven.core.scenario.steps.StepModelFactory;43import xyz.multicatch.mockgiven.core.utils.ExceptionUtils;44public class MockScenarioModelBuilder extends ScenarioModelBuilder {45 private static final Set<String> STACK_TRACE_FILTER = ImmutableSet46 .of("sun.reflect", "com.tngtech.jgiven.impl.intercept", "com.tngtech.jgiven.impl.intercept", "$$EnhancerByCGLIB$$",47 "java.lang.reflect", "net.sf.cglib.proxy", "com.sun.proxy");48 private static final boolean FILTER_STACK_TRACE = Config.config()49 .filterStackTrace();50 private final Stack<ExtendedStepModel> parentSteps = new Stack<>();51 private final CurrentScenarioState currentScenarioState;52 private final StepCommentFactory stepCommentFactory;53 private final DescriptionFactory descriptionFactory;54 private final CaseDescriptionFactory caseDescriptionFactory;55 private final DescriptionQueue descriptionQueue;56 private AbstractJGivenConfiguration configuration;57 private StepModelFactory stepModelFactory;58 private AnnotationTagExtractor annotationTagExtractor;59 private ParameterFormatterFactory formatterFactory;60 private ExtendedScenarioModel scenarioModel;61 private ExtendedScenarioCaseModel scenarioCaseModel;62 private ExtendedStepModel currentStep;63 private Word introWord;64 private long scenarioStartedNanos;65 private ReportModel reportModel;66 public MockScenarioModelBuilder(CurrentScenarioState currentScenarioState, TextResourceProvider textResourceProvider) {67 this.currentScenarioState = currentScenarioState;68 this.stepCommentFactory = new StepCommentFactory();69 this.descriptionFactory = new DescriptionFactory(new AsProviderFactory(), new AnnotatedDescriptionFactory(), textResourceProvider);70 this.caseDescriptionFactory = new CaseDescriptionFactory(new CaseAsFactory(), new CaseAsProviderFactory());71 this.descriptionQueue = new DescriptionQueue();72 this.configuration = new DefaultConfiguration();73 initializeDependentOnConfiguration();74 }75 public MockScenarioModelBuilder(76 CurrentScenarioState currentScenarioState,77 StepCommentFactory stepCommentFactory,78 DescriptionFactory descriptionFactory,79 CaseDescriptionFactory caseDescriptionFactory,80 DescriptionQueue descriptionQueue81 ) {82 this.currentScenarioState = currentScenarioState;83 this.stepCommentFactory = stepCommentFactory;84 this.descriptionFactory = descriptionFactory;85 this.caseDescriptionFactory = caseDescriptionFactory;86 this.descriptionQueue = descriptionQueue;87 this.configuration = new DefaultConfiguration();88 initializeDependentOnConfiguration();89 }90 private void initializeDependentOnConfiguration() {91 formatterFactory = new ParameterFormatterFactory(configuration);92 stepModelFactory = new StepModelFactory(currentScenarioState, formatterFactory, descriptionFactory);93 annotationTagExtractor = AnnotationTagExtractor.forConfig(configuration);94 }95 @Override96 public void scenarioStarted(String description) {97 scenarioStartedNanos = System.nanoTime();98 String readableDescription = description;99 if (description.contains("_")) {100 readableDescription = description.replace('_', ' ');101 } else if (!description.contains(" ")) {102 readableDescription = WordUtil.camelCaseToCapitalizedReadableText(description);103 }104 scenarioCaseModel = new ExtendedScenarioCaseModel();105 scenarioModel = new ExtendedScenarioModel();106 scenarioModel.addCase(scenarioCaseModel);107 scenarioModel.setDescription(readableDescription);108 }109 @Override110 public void addStepMethod(111 Method paramMethod,112 List<NamedArgument> arguments,113 InvocationMode mode,114 boolean hasNestedSteps115 ) {116 ExtendedStepModel stepModel = stepModelFactory.create(paramMethod, arguments, mode, introWord);117 DescriptionData description = DescriptionData.of(stepModel);118 descriptionQueue.add(description);119 if (introWord != null) {120 introWord = null;121 }122 if (!paramMethod.isAnnotationPresent(InlineWithNext.class)) {123 stepModel.setDescription(descriptionQueue.join());124 if (parentSteps.empty()) {125 getCurrentScenarioCase().addStep(stepModel);126 } else {127 parentSteps.peek()128 .addNestedStep(stepModel);129 }130 if (hasNestedSteps) {131 parentSteps.push(stepModel);132 }133 currentStep = stepModel;134 }135 }136 @Override137 public void introWordAdded(String value) {138 introWord = new Word();139 introWord.setIntroWord(true);140 introWord.setValue(value);141 }142 @Override143 public void stepCommentAdded(List<NamedArgument> arguments) {144 if (currentStep == null) {145 throw new JGivenWrongUsageException("A step comment must be added after the corresponding step, "146 + "but no step has been executed yet.");147 }148 currentStep.setComment(stepCommentFactory.create(arguments));149 }150 private ScenarioCaseModel getCurrentScenarioCase() {151 if (scenarioCaseModel == null) {152 scenarioStarted("A Scenario");153 }154 return scenarioCaseModel;155 }156 @Override157 public void stepMethodInvoked(158 Method method,159 List<NamedArgument> arguments,160 InvocationMode mode,161 boolean hasNestedSteps162 ) {163 if (method.isAnnotationPresent(IntroWord.class)) {164 introWordAdded(descriptionFactory.create(currentScenarioState.getCurrentStage(), method));165 } else if (method.isAnnotationPresent(StepComment.class)) {166 stepCommentAdded(arguments);167 } else {168 addTags(method.getAnnotations());169 addTags(method.getDeclaringClass()170 .getAnnotations());171 addStepMethod(method, arguments, mode, hasNestedSteps);172 }173 }174 @Override175 public void stepMethodFailed(Throwable t) {176 if (currentStep != null) {177 currentStep.setStatus(StepStatus.FAILED);178 }179 }180 @Override181 public void stepMethodFinished(182 long durationInNanos,183 boolean hasNestedSteps184 ) {185 if (hasNestedSteps && !parentSteps.isEmpty()) {186 currentStep = parentSteps.peek();187 }188 if (currentStep != null) {189 currentStep.setDurationInNanos(durationInNanos);190 if (hasNestedSteps) {191 if (currentStep.getStatus() != StepStatus.FAILED) {192 currentStep.inheritStatusFromNested();193 }194 parentSteps.pop();195 }196 }197 if (!hasNestedSteps && !parentSteps.isEmpty()) {198 currentStep = parentSteps.peek();199 }200 }201 @Override202 public void scenarioFailed(Throwable e) {203 scenarioCaseModel.setException(e, getStackTrace(e));204 }205 private List<String> getStackTrace(Throwable throwable) {206 if (FILTER_STACK_TRACE) {207 return ExceptionUtils.getFilteredStackTrace(throwable, STACK_TRACE_FILTER);208 } else {209 return ExceptionUtils.getStackTrace(throwable);210 }211 }212 @Override213 public void scenarioStarted(214 Class<?> testClass,215 Method method,216 List<NamedArgument> namedArguments217 ) {218 readConfiguration(testClass);219 readAnnotations(testClass, method);220 scenarioModel.setClassName(testClass.getName());221 scenarioModel.setExplicitParametersWithoutUnderline(ArgumentUtils.getNames(namedArguments));222 scenarioModel.setTestMethodName(method.getName());223 List<ObjectFormatter<?>> formatter = formatterFactory.create(method.getParameters(), namedArguments);224 List<String> arguments = ParameterFormatterUtils.toStringList(formatter, ArgumentUtils.getValues(namedArguments));225 scenarioCaseModel.setExplicitArguments(arguments);226 setCaseDescription(testClass, method, namedArguments);227 }228 private void readConfiguration(Class<?> testClass) {229 configuration = ConfigurationUtil.getConfiguration(testClass);230 initializeDependentOnConfiguration();231 }232 private void readAnnotations(233 Class<?> testClass,234 Method method235 ) {236 String scenarioDescription = descriptionFactory.create(currentScenarioState.getCurrentStage(), method);237 scenarioStarted(scenarioDescription);238 if (method.isAnnotationPresent(ExtendedDescription.class)) {239 scenarioModel.setExtendedDescription(method.getAnnotation(ExtendedDescription.class)240 .value());241 }242 if (method.isAnnotationPresent(NotImplementedYet.class) || method.isAnnotationPresent(Pending.class)) {243 scenarioCaseModel.setStatus(ExecutionStatus.SCENARIO_PENDING);244 }245 if (scenarioCaseModel.isFirstCase()) {246 addTags(testClass.getAnnotations());247 addTags(method.getAnnotations());248 }249 }250 private void setCaseDescription(251 Class<?> testClass,252 Method method,253 List<NamedArgument> namedArguments254 ) {255 CaseDescription caseDescription = caseDescriptionFactory.create(method, testClass, scenarioCaseModel, namedArguments);256 if (caseDescription != null) {257 String description = caseDescriptionFactory.create(caseDescription, scenarioCaseModel.getExplicitArguments());258 scenarioCaseModel.setDescription(description);259 }260 }261 public void addTags(Annotation... annotations) {262 for (Annotation annotation : annotations) {263 addTags(annotationTagExtractor.extract(annotation));264 }265 }266 private void addTags(List<Tag> tags) {267 if (!tags.isEmpty()) {268 if (reportModel != null) {269 this.reportModel.addTags(tags);270 }271 if (scenarioModel != null) {272 this.scenarioModel.addTags(tags);273 }274 }275 }276 @Override277 public void scenarioFinished() {278 AssertionUtil.assertTrue(scenarioStartedNanos > 0, "Scenario has no start time");279 long durationInNanos = System.nanoTime() - scenarioStartedNanos;280 scenarioCaseModel.setDurationInNanos(durationInNanos);281 scenarioModel.addDurationInNanos(durationInNanos);282 reportModel.addScenarioModelOrMergeWithExistingOne(scenarioModel);283 }284 @Override285 public void attachmentAdded(Attachment attachment) {286 currentStep.setAttachment(attachment);287 }288 @Override289 public void extendedDescriptionUpdated(String extendedDescription) {290 currentStep.setExtendedDescription(extendedDescription);291 }292 @Override293 public void sectionAdded(String sectionTitle) {294 StepModel stepModel = new StepModel();295 stepModel.setName(sectionTitle);296 stepModel.addWords(new Word(sectionTitle));297 stepModel.setIsSectionTitle(true);298 getCurrentScenarioCase().addStep(stepModel);299 }300 @Override301 public void tagAdded(302 Class<? extends Annotation> annotationClass,303 String... values304 ) {305 TagConfiguration tagConfig = annotationTagExtractor.toTagConfiguration(annotationClass);306 List<Tag> tags = AnnotationTagUtils.toTags(tagConfig, null);307 if (!tags.isEmpty()) {308 if (values.length > 0) {309 addTags(AnnotationTagUtils.getExplodedTags(Iterables.getOnlyElement(tags), values, null, tagConfig));310 } else {311 addTags(tags);312 }313 }314 }315 public void setReportModel(ReportModel reportModel) {316 this.reportModel = reportModel;317 }318 public ReportModel getReportModel() {319 return reportModel;320 }321 public ScenarioModel getScenarioModel() {322 return scenarioModel;323 }...
Source:JgivenReportGenerator.java
1package org.jenkinsci.plugins.jgiven;2import com.tngtech.jgiven.report.AbstractReportConfig;3import com.tngtech.jgiven.report.AbstractReportGenerator;4import com.tngtech.jgiven.report.ReportGenerator;5import com.tngtech.jgiven.report.asciidoc.AsciiDocReportConfig;6import com.tngtech.jgiven.report.asciidoc.AsciiDocReportGenerator;7import com.tngtech.jgiven.report.html5.Html5ReportConfig;8import com.tngtech.jgiven.report.html5.Html5ReportGenerator;9import com.tngtech.jgiven.report.text.PlainTextReportConfig;10import com.tngtech.jgiven.report.text.PlainTextReportGenerator;11import groovy.lang.Closure;12import hudson.Extension;13import hudson.FilePath;14import hudson.Launcher;15import hudson.init.Initializer;16import hudson.model.*;17import hudson.tasks.BuildStepDescriptor;18import hudson.tasks.BuildStepMonitor;19import hudson.tasks.Publisher;20import hudson.tasks.Recorder;21import hudson.util.FormValidation;22import jenkins.tasks.SimpleBuildStep;23import org.apache.commons.lang.StringUtils;24import org.kohsuke.stapler.AncestorInPath;25import org.kohsuke.stapler.DataBoundConstructor;26import org.kohsuke.stapler.DataBoundSetter;27import org.kohsuke.stapler.QueryParameter;28import javax.annotation.Nonnull;29import java.io.File;30import java.io.IOException;31import java.util.ArrayList;32import java.util.Collections;33import java.util.List;34import java.util.Locale;35import static hudson.init.InitMilestone.PLUGINS_STARTED;36public class JgivenReportGenerator extends Recorder implements SimpleBuildStep {37 public static final String REPORTS_DIR = "jgiven-reports";38 private List<ReportConfig> reportConfigs;39 private boolean excludeEmptyScenarios;40 @Override41 public BuildStepMonitor getRequiredMonitorService() {42 return BuildStepMonitor.NONE;43 }44 @DataBoundConstructor45 public JgivenReportGenerator(List<ReportConfig> reportConfigs) {46 this.reportConfigs = (reportConfigs != null && !reportConfigs.isEmpty()) ? new ArrayList<ReportConfig>(reportConfigs) : Collections.<ReportConfig>singletonList(new HtmlReportConfig());47 }48 public JgivenReportGenerator(Closure<?> configClosure) {49 JgivenDslContext context = new JgivenDslContext();50 executeInContext(configClosure, context);51 setJgivenResults(context.resultFiles);52 setExcludeEmptyScenarios(context.excludeEmptyScenarios);53 reportConfigs = context.reportConfigs;54 }55 private static void executeInContext(Closure<?> configClosure, Object context) {56 configClosure.setDelegate(context);57 configClosure.setResolveStrategy(Closure.DELEGATE_FIRST);58 configClosure.call();59 }60 private String jgivenResults;61 public List<ReportConfig> getReportConfigs() {62 return Collections.unmodifiableList(reportConfigs);63 }64 @Override65 public void perform(@Nonnull Run<?, ?> run, @Nonnull FilePath workspace, @Nonnull Launcher launcher, @Nonnull TaskListener listener) throws InterruptedException, IOException {66 listener.getLogger().println(Messages.JgivenReportGenerator_generating_reports());67 File reportRootDir = reportRootDir(run);68 File jgivenJsons = new File(reportRootDir, "json");69 int numFiles = workspace.copyRecursiveTo(jgivenResults, new FilePath(jgivenJsons));70 if (numFiles > 0) {71 listener.getLogger().println(Messages.JgivenReportGenerator_results_found(numFiles));72 for (ReportConfig reportConfig : reportConfigs) {73 listener.getLogger().println(Messages.JgivenReportGenerator_generating_report(reportConfig.getReportName()));74 generateReport(reportRootDir, jgivenJsons, reportConfig, workspace);75 }76 run.addAction(new JgivenReportAction(run, reportConfigs));77 } else {78 listener.getLogger().println(Messages._JgivenReportGenerator_no_reports());79 }80 }81 private void generateReport(File reportRootDir, File JgivenJsons, ReportConfig reportConfig, FilePath workspace) throws IOException, InterruptedException {82 try {83 AbstractReportGenerator reportGenerator = createReportGenerator(reportConfig.getFormat());84 configureReportGenerator(reportRootDir, JgivenJsons, reportConfig, reportGenerator, workspace);85 reportGenerator.generateReport();86 } catch (IOException e) {87 throw e;88 } catch (RuntimeException e) {89 throw e;90 } catch (InterruptedException e) {91 throw e;92 } catch (Exception e) {93 throw new RuntimeException(e);94 }95 }96 private AbstractReportGenerator createReportGenerator(ReportGenerator.Format format) {97 switch (format) {98 case TEXT:99 return new PlainTextReportGenerator();100 case ASCIIDOC:101 return new AsciiDocReportGenerator();102 case HTML:103 case HTML5:104 return new Html5ReportGenerator();105 default:106 throw new IllegalArgumentException("Unsupported format "+format);107 }108 }109 void configureReportGenerator(File reportRootDir, File sourceDir, ReportConfig reportConfig, AbstractReportGenerator generator, FilePath workspace) throws IOException, InterruptedException {110 AbstractReportConfig jgivenConfig = reportConfig.getJgivenConfig(workspace);111 jgivenConfig.setSourceDir(sourceDir);112 jgivenConfig.setTargetDir(new File(reportRootDir, reportConfig.getReportDirectory()));113 jgivenConfig.setExcludeEmptyScenarios(excludeEmptyScenarios);114 generator.setConfig(jgivenConfig);115 }116 private File reportRootDir(Run<?, ?> run) {117 return new File(run.getRootDir(), REPORTS_DIR);118 }119 public String getJgivenResults() {120 return jgivenResults;121 }122 @DataBoundSetter123 public void setJgivenResults(String jgivenResults) {124 this.jgivenResults = jgivenResultsFromString(jgivenResults);125 }126 private static String jgivenResultsFromString(String jgivenResults) {127 return StringUtils.isBlank(jgivenResults) ? "**/json/*.json" : jgivenResults;128 }129 @DataBoundSetter130 public void setExcludeEmptyScenarios(boolean excludeEmptyScenarios) {131 this.excludeEmptyScenarios = excludeEmptyScenarios;132 }133 public boolean isExcludeEmptyScenarios() {134 return excludeEmptyScenarios;135 }136 @Extension137 public static class DescriptorImpl extends BuildStepDescriptor<Publisher> {138 @Override139 public boolean isApplicable(Class<? extends AbstractProject> jobType) {140 return true;141 }142 @Override143 public String getDisplayName() {144 return Messages.JgivenReportGenerator_display_name();145 }146 public FormValidation doCheckJgivenResults(147 @AncestorInPath AbstractProject project,148 @QueryParameter String value) throws IOException {149 if (project == null) {150 return FormValidation.ok();151 }152 return FilePath.validateFileMask(project.getSomeWorkspace(), jgivenResultsFromString(value));153 }154 }155 public static abstract class ReportConfig extends AbstractDescribableImpl<ReportConfig> {156 private ReportGenerator.Format format;157 public ReportGenerator.Format getFormat() {158 return format;159 }160 ReportConfig(ReportGenerator.Format format) {161 this.format = format;162 }163 public String getReportDirectory() {164 return getFormat().name().toLowerCase(Locale.ENGLISH);165 }166 public String getReportUrl() {167 return getReportDirectory();168 }169 abstract String getReportName();170 public abstract AbstractReportConfig getJgivenConfig(FilePath workspace) throws IOException, InterruptedException;171 }172 public static class HtmlReportConfig extends ReportConfig {173 private String customCssFile;174 private String customJsFile;175 private String title;176 @DataBoundConstructor177 public HtmlReportConfig() {178 super(ReportGenerator.Format.HTML);179 }180 public HtmlReportConfig(Closure<?> closure) {181 this();182 HtmlReportContext context = new HtmlReportContext();183 executeInContext(closure, context);184 this.setCustomCssFile(context.customCss);185 this.setCustomJsFile(context.customJs);186 this.setTitle(context.title);187 }188 public String getReportName() {189 return Messages.JgivenReport_html_name();190 }191 public String getReportUrl() {192 return String.format("%s/index.html", getReportDirectory());193 }194 public String getCustomCssFile() {195 return customCssFile;196 }197 @DataBoundSetter198 public void setCustomCssFile(String customCssFile) {199 this.customCssFile = customCssFile;200 }201 public String getCustomJsFile() {202 return customJsFile;203 }204 @DataBoundSetter205 public void setCustomJsFile(String customJsFile) {206 this.customJsFile = customJsFile;207 }208 public String getTitle() {209 return title;210 }211 @DataBoundSetter212 public void setTitle(String title) {213 this.title = title;214 }215 @Override216 public AbstractReportConfig getJgivenConfig(FilePath workspace) throws IOException, InterruptedException {217 Html5ReportConfig jgivenConfig = new Html5ReportConfig();218 if (StringUtils.isNotBlank(customCssFile)) {219 jgivenConfig.setCustomCss(copyFileToMaster(workspace, customCssFile));220 }221 if (StringUtils.isNotBlank(customJsFile)) {222 jgivenConfig.setCustomJs(copyFileToMaster(workspace, customJsFile));223 }224 if (StringUtils.isNotBlank(title)) {225 jgivenConfig.setTitle(title);226 }227 return jgivenConfig;228 }229 private File copyFileToMaster(FilePath workspace, String file) throws IOException, InterruptedException {230 File tmpFile = File.createTempFile("file", null);231 workspace.child(file).copyTo(new FilePath(tmpFile));232 return tmpFile;233 }234 @Extension235 public static class DescriptorImpl extends Descriptor<ReportConfig> {236 @Override237 public String getDisplayName() {238 return Messages.JgivenReport_html_name();239 }240 public FormValidation doCheckCustomCssFile(@QueryParameter String value) {241 return validateFileExists(value);242 }243 public FormValidation doCheckCustomJsFile(@QueryParameter String value) {244 return validateFileExists(value);245 }246 private FormValidation validateFileExists(@QueryParameter String value) {247 if (StringUtils.isEmpty(value)) {248 return FormValidation.ok();249 }250 File file = new File(value);251 return file.exists() ? FormValidation.ok() : FormValidation.error(Messages.JgivenReportGenerator_custom_file_does_not_exist());252 }253 }254 }255 public static class TextReportConfig extends ReportConfig {256 @DataBoundConstructor257 public TextReportConfig() {258 super(ReportGenerator.Format.TEXT);259 }260 @Override261 public String getReportName() {262 return Messages.JgivenReport_text_name();263 }264 @Extension265 public static class DescriptorImpl extends Descriptor<ReportConfig> {266 @Override267 public String getDisplayName() {268 return Messages.JgivenReport_text_name();269 }270 }271 @Override272 public AbstractReportConfig getJgivenConfig(FilePath workspace) throws IOException, InterruptedException {273 return new PlainTextReportConfig();274 }275 }276 public static class AsciiDocReportConfig extends ReportConfig {277 @DataBoundConstructor278 public AsciiDocReportConfig() {279 super(ReportGenerator.Format.ASCIIDOC);280 }281 public String getReportName() {282 return Messages.JgivenReport_asciidoc_name();283 }284 @Extension285 public static class DescriptorImpl extends Descriptor<ReportConfig> {286 @Override287 public String getDisplayName() {288 return Messages.JgivenReport_asciidoc_name();289 }290 }291 @Override292 public AbstractReportConfig getJgivenConfig(FilePath workspace) throws IOException, InterruptedException {293 return new com.tngtech.jgiven.report.asciidoc.AsciiDocReportConfig();294 }295 }296 @Initializer(before = PLUGINS_STARTED)297 public static void addAliases() {298 Items.XSTREAM2.addCompatibilityAlias("org.jenkinsci.plugins.jgiven.JgivenReportGenerator$Html5ReportConfig", HtmlReportConfig.class);299 }300}...
Source:AndroidJGivenTestRule.java
1package com.a65apps.architecturecomponents.sample;2import android.Manifest;3import android.os.Environment;4import com.tngtech.jgiven.impl.Config;5import com.tngtech.jgiven.impl.ScenarioBase;6import org.junit.rules.TestRule;7import org.junit.runner.Description;8import org.junit.runners.model.Statement;9import java.io.File;10import androidx.test.rule.GrantPermissionRule;11public class AndroidJGivenTestRule implements TestRule {12 private final GrantPermissionRule grantPermissionRule = GrantPermissionRule13 .grant(Manifest.permission.READ_EXTERNAL_STORAGE,14 Manifest.permission.WRITE_EXTERNAL_STORAGE);15 public AndroidJGivenTestRule(ScenarioBase scenario) {16 scenario.setStageClassCreator(new AndroidStageClassCreator());17 File reportDir = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS),18 "jgiven-results/testDebugUnitTest").getAbsoluteFile();19 Config.config().setReportDir(reportDir);20 }21 @Override22 public Statement apply(final Statement base, Description description) {23 return grantPermissionRule.apply(base, description);24 }25}...
Config
Using AI Code Generation
1package com.tngtech.jgiven.impl;2import com.tngtech.jgiven.report.model.ScenarioModel;3import com.tngtech.jgiven.report.model.StepModel;4import com.tngtech.jgiven.report.model.Tag;5import com.tngtech.jgiven.report.model.Word;6import com.tngtech.jgiven.report.text.TextFormatter;7import com.tngtech.jgiven.report.text.TextFormatterConfiguration;8import com.tngtech.jgiven.report.text.TextFormatterConfigurationBuilder;9import com.tngtech.jgiven.report.text.TextFormatterFactory;10import com.tngtech.jgiven.report.text.TextFormatterFactory.TextFormatterType;11import com.tngtech.jgiven.report.text.TextFormatterHelper;12import com.tngtech.jgiven.report.text.TextFormatterHelper.TextFormatterHelperConfiguration;13import com.tngtech.jgiven.report.text.TextFormatterHelper.TextFormatterHelperConfigurationBuilder;14import com.tngtech.jgiven.report.text.TextFormatterHelperFactory;15import com.tngtech.jgiven.report.text.TextFormat
Config
Using AI Code Generation
1package com.tngtech.jgiven.example;2import com.tngtech.jgiven.impl.Config;3public class ConfigExample {4 public static void main(String[] args) {5 Config config = new Config();6 config.setReportDir("C:\\Users\\Admin\\Desktop\\jgiven\\jgiven-reports");7 config.setReportName("JGivenExampleReport");8 config.setReportType("html");9 }10}
Config
Using AI Code Generation
1import com.tngtech.jgiven.impl.Config;2public class ConfigDemo {3 public static void main(String[] args) {4 Config config = Config.getConfig();5 System.out.println("Value of config key: " + config.getValue("jgiven.config.key"));6 }7}
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!!