Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Info
titleAre you using ANT or Maven2/Maven3?

If you are relying on ANT or Maven2/Maven3 for your build, it is probably easier for you to use the associated tasks/plugin directly:

  • The documentation for the CARGO ANT tasks can be found here: Ant support.
  • The documentation for the CARGO Maven2/Maven3 plugin can be found here: Maven 3 Plugin.

Note that the Maven2/Maven3 plugin also has archetypes you can directly use as a skeleton for integration.


Example

The best is to create a JUnit TestSetup extension so that you start and stop your container once for the whole test suite. For example:

Code Block
java
java
import junit.extensions.TestSetup;
import junit.framework.Test;
[...]

public class CargoTestSetup extends TestSetup
{
    InstalledLocalContainer container;

    public CargoTestSetup(Test test)
    {
        super(test);
    }

    protected void setUp() throws Exception
    {
        // (1) Optional step to install the container from a URL pointing to its distribution
        Installer installer = new ZipURLInstaller(
            new URL("https://repo.maven.org/maven2/org/apache/tomcat/tomcat/7.0.68/tomcat-7.0.68.zip"));
        installer.install();

        // (2) Create the Cargo Container instance wrapping our physical container
        LocalConfiguration configuration = (LocalConfiguration) new DefaultConfigurationFactory().createConfiguration(
            "tomcat7x", ContainerType.INSTALLED, ConfigurationType.STANDALONE);
        InstalledLocalContainer container =
            (InstalledLocalContainer) new DefaultContainerFactory().createContainer(
                "tomcat7x", ContainerType.INSTALLED, configuration);
        container.setHome(installer.getHome());

        // (3) Statically deploy some WAR (optional)
        configuration.addDeployable(new WAR("cargo.war"));

        // (4) Start the container
        container.start();
    }

    protected void tearDown() throws Exception
    {
        // (6) Stop the container
        container.stop();
    }
}

Then write your test case. For example:

Code Block
java
java
import junit.framework.TestCase;
import junit.framework.Test;
import junit.framework.TestSuite;
[...]

public class MyTest extends TestCase
{
    public static Test suite()
    {
        TestSuite suite = new TestSuite(MyTest.class);
        return new CargoTestSetup(suite);
    }

    public void testSomething()
    {
        // (5) Perform any test you wish here
        [...]
    }
}

References

Functional Testing with Cargo

Excerpt

This page explains how to do functional testing with the Cargo Java API and JUnit.


Info
titleAre you using ANT or Maven2/Maven3?

If you are relying on ANT or Maven2/Maven3 for your build, it is probably easier for you to use the associated tasks/plugin directly:

  • The documentation for the CARGO ANT tasks can be found here: Ant support.
  • The documentation for the CARGO Maven2/Maven3 plugin can be found here: Maven 3 Plugin.

Note that the Maven2/Maven3 plugin also has archetypes you can directly use as a skeleton for integration.

...


Example

The best is to create a JUnit TestSetup extension so that you start and stop your container once for the whole test suite. For example:

Code Block
java
java
import junit.extensions.TestSetup;
import junit.framework.Test;
[...]

public class CargoTestSetup extends TestSetup
{
    InstalledLocalContainer container;

    public CargoTestSetup(Test test)
    {
        super(test);
    }

    protected void setUp() throws Exception
    {
        // (1) Optional step to install the container from a URL pointing to its distribution
        Installer installer = new ZipURLInstaller(
            new URL("httphttps://repo1repo.maven.org/maven2/org/apache/tomcat/tomcat/7.0.68/tomcat-7.0.68.zip"));
        installer.install();

        // (2) Create the Cargo Container instance wrapping our physical container
        LocalConfiguration configuration = (LocalConfiguration) new DefaultConfigurationFactory().createConfiguration(
            "tomcat7x", ContainerType.INSTALLED, ConfigurationType.STANDALONE);
        InstalledLocalContainer container =
            (InstalledLocalContainer) new DefaultContainerFactory().createContainer(
                "tomcat7x", ContainerType.INSTALLED, configuration);
        container.setHome(installer.getHome());

        // (3) Statically deploy some WAR (optional)
        configuration.addDeployable(new WAR("cargo.war"));

        // (4) Start the container
        container.start();
    }

    protected void tearDown() throws Exception
    {
        // (6) Stop the container
        container.stop();
    }
}

...

Code Block
java
java
import junit.framework.TestCase;
import junit.framework.Test;
import junit.framework.TestSuite;
[...]

public class MyTest extends TestCase
{
    public static Test suite()
    {
        TestSuite suite = new TestSuite(MyTest.class);
        return new CargoTestSetup(suite);
    }

    public void testSomething()
    {
        // (5) Perform any test you wish here
        [...]
    }
}

References