Class TestPlan



  • @API(status=STABLE,
         since="1.0")
    public final class TestPlan
    extends java.lang.Object
    TestPlan describes the tree of tests and containers as discovered by a Launcher.

    Tests and containers are represented by TestIdentifier instances. The complete set of identifiers comprises a tree-like structure. However, each identifier only stores the unique ID of its parent. This class provides a number of helpful methods to retrieve the parent, children, and descendants of an identifier.

    While the contained instances of TestIdentifier are immutable, instances of this class contain mutable state. For example, when a dynamic test is registered at runtime, it is added to the original test plan and reported to TestExecutionListener implementations.

    Since:
    1.0
    See Also:
    Launcher, TestExecutionListener
    • Method Detail

      • from

        @API(status=INTERNAL,
             since="1.0")
        public static TestPlan from​(java.util.Collection<TestDescriptor> engineDescriptors)
        Construct a new TestPlan from the supplied collection of TestDescriptors.

        Each supplied TestDescriptor is expected to be a descriptor for a TestEngine.

        Parameters:
        engineDescriptors - the engine test descriptors from which the test plan should be created; never null
        Returns:
        a new test plan
      • add

        public void add​(TestIdentifier testIdentifier)
        Add the supplied TestIdentifier to this test plan.
        Parameters:
        testIdentifier - the identifier to add; never null
      • getRoots

        public java.util.Set<TestIdentifier> getRoots​()
        Get the root TestIdentifiers for this test plan.
        Returns:
        an unmodifiable set of the root identifiers
      • getParent

        public java.util.Optional<TestIdentifier> getParent​(TestIdentifier child)
        Get the parent of the supplied TestIdentifier.
        Parameters:
        child - the identifier to look up the parent for; never null
        Returns:
        an Optional containing the parent, if present
      • getChildren

        public java.util.Set<TestIdentifier> getChildren​(TestIdentifier parent)
        Get the children of the supplied TestIdentifier.
        Parameters:
        parent - the identifier to look up the children for; never null
        Returns:
        an unmodifiable set of the parent's children, potentially empty
        See Also:
        getChildren(String)
      • getChildren

        public java.util.Set<TestIdentifier> getChildren​(java.lang.String parentId)
        Get the children of the supplied unique ID.
        Parameters:
        parentId - the unique ID to look up the children for; never null or blank
        Returns:
        an unmodifiable set of the parent's children, potentially empty
        See Also:
        getChildren(TestIdentifier)
      • getTestIdentifier

        public TestIdentifier getTestIdentifier​(java.lang.String uniqueId)
                                         throws PreconditionViolationException
        Get the TestIdentifier with the supplied unique ID.
        Parameters:
        uniqueId - the unique ID to look up the identifier for; never null or blank
        Returns:
        the identifier with the supplied unique ID; never null
        Throws:
        PreconditionViolationException - if no TestIdentifier with the supplied unique ID is present in this test plan
      • countTestIdentifiers

        public long countTestIdentifiers​(java.util.function.Predicate<? super TestIdentifier> predicate)
        Count all TestIdentifiers that satisfy the given predicate.
        Parameters:
        predicate - a predicate which returns true for identifiers to be counted; never null
        Returns:
        the number of identifiers that satisfy the supplied predicate
      • getDescendants

        public java.util.Set<TestIdentifier> getDescendants​(TestIdentifier parent)
        Get all descendants of the supplied TestIdentifier (i.e., all of its children and their children, recursively).
        Parameters:
        parent - the identifier to look up the descendants for; never null
        Returns:
        an unmodifiable set of the parent's descendants, potentially empty
      • containsTests

        public boolean containsTests​()