package ru.yandex.qatools.allure.testng;
import static java.util.Collections.*;
import static javax.xml.bind.JAXB.unmarshal;
import static org.hamcrest.Matchers.*;
import static org.junit.Assert.*;
import static ru.yandex.qatools.allure.commons.AllureFileUtils.*;
import java.io.*;
import java.util.*;
import org.junit.*;
import org.junit.rules.TemporaryFolder;
import org.testng.TestNG;
import ru.yandex.qatools.allure.model.*;
import ru.yandex.qatools.allure.utils.AllureResultsUtils;
public class AllureTestListenerGroupsTest {
@Rule
public TemporaryFolder folder = new TemporaryFolder();
private File resultsDir;
@Before
public void setUp() throws IOException {
resultsDir = folder.newFolder();
AllureResultsUtils.setResultsDirectory(resultsDir);
}
@Test // see https://github.com/allure-framework/allure-core/issues/880
public void reportContainsTestForGroups() {
// GIVEN: an TestNG suite with groups
TestNG testNG = new TestNG(false);
testNG.setTestSuites(singletonList(getClass().getClassLoader().getResource("suite-groups.xml").getFile()));
// WHEN: executing
testNG.run();
// THEN: report only contains results for included groups
List<File> files = listTestSuiteFiles(resultsDir);
assertThat(files, hasSize(1));
File file = files.get(0);
TestSuiteResult result = unmarshal(file, TestSuiteResult.class);
assertThat(result.getTestCases(), hasSize(2));
List<String> status = new ArrayList<>();
for (TestCaseResult test : result.getTestCases()) {
status.add(test.getName() + ":" + test.getStatus());
}
assertThat(status, containsInAnyOrder("inactiveIncludedTest:PENDING", "activeIncludedTest:PASSED"));
}
}