package org.atteo.moonshine.tests; import java.io.IOException; import java.nio.charset.StandardCharsets; import java.nio.file.Files; import java.nio.file.Paths; import java.nio.file.StandardOpenOption; import javax.inject.Inject; import javax.inject.Named; import org.atteo.moonshine.tests.MoonshineConfiguration.Alternatives; import org.atteo.moonshine.tests.MoonshineConfiguration.Config; import org.junit.Assert; import org.junit.Test; @MoonshineConfiguration(skipDefault = true, forCartesianProductOf = { @Alternatives(value = { @Config(id = "one", fromString = "" + "<config>" + " <simple message='1${letter}'/>" + "</config>"), @Config(id = "two", fromString = "" + "<config>" + " <simple message='2${letter}'/>" + "</config>")}), @Alternatives(value = { @Config(id = "A", fromString = "" + "<config>" + " <properties>" + " <letter>A</letter>" + " </properties>" + "</config>"), @Config(id = "B", fromString = "" + "<config>" + " <properties>" + " <letter>B</letter>" + " </properties>" + "</config>") }) }) public class ShouldExecuteForCartesianProductTest extends MoonshineTest { @Inject @Named("message") private String message; @Test public void shouldBeOneOfTwoMessages() throws IOException { if (!message.equals("1A") && !message.equals("1B") && !message.equals("2A") && !message.equals("2B")) { Assert.fail(); } Files.write(Paths.get("target/ShouldExecuteForCartesianProduct.txt"), message.getBytes(StandardCharsets.UTF_8), StandardOpenOption.APPEND, StandardOpenOption.CREATE); // then // assertion in pom.xml } }