IntelliJ IDEA 2021.1 Help

Arquillian

This guide shows main IntelliJ IDEA features for writing and running Arquillian tests.

Before you start

Make sure that the following software is installed on your computer:

You should also download javax-inject.jar. This file will be used as a library when developing our sample test class.

Creating a project with Arquillian JUnit support

  1. Click New Project on the Welcome screen, or select File | New | Project.

    The New Project wizard opens.

  2. In the left-hand pane, select Java Enterprise.

  3. From the Project SDK list, select the JDK that you want to use in your project.

    If the JDK is installed on your computer, but not defined in the IDE, select Add JDK and specify the path to the JDK home directory.

    If you don't have the necessary JDK on your computer, select Download JDK.

  4. If GlassFish is not defined in IntelliJ IDEA yet, click New to the right of the Application Server field and select Glassfish Server.

    In the Glassfish Server dialog, specify the GlassFish Server installation directory.

  5. Under Additional Libraries and Frameworks, select the Arquillian JUnit checkbox.

    Creating a project with Arquillian JUnit support

    Click Next.

  6. Specify the name for your new project (for example, HelloArquillian) and click Finish.

    Creating a project with Arquillian JUnit support

(To add Arquillian JUnit support for an existing project: in the Project tool window, right-click your project or module folder and select Add Framework Support. Then, select the Arquillian JUnit checkbox in the dialog that opens.)

Creating a class

Now we are going to create a class that we'll test. Let the class name be com.example.hello.Greeter.

  1. In the Project tool window, right-click the src folder, point to New and select Java Class.

  2. In the Create New Class dialog that opens, type com.example.hello.Greeter in the Name field and press Enter.

    The package com.example.hello and the class Greeter are shown in the Project tool window.

    Arq04project greeter

    At the same time, the file Greeter.java opens in the editor.

Developing code for the Greeter class

Here is the code for the Greeter class.

package com.example.hello; import java.io.PrintStream; public class Greeter { public void greet(PrintStream to, String name) { to.println(createGreeting(name)); } public String createGreeting(String name) { return "Hello, " + name + "!"; } }

Copy the code into the editor.

Arq05editor greeter

Defining javax-inject.jar as a library

To be able to write and run our Arquillian test, we need javax-inject.jar as a library.

  1. In the project root folder, create the folder lib (New | Directory) and copy javax-inject.jar into that folder.

    Arq06project javax inject

  2. Open the Project Structure dialog Ctrl+Alt+Shift+S and select Libraries.

  3. Click the Add button, select Java and select javax-inject.jar in the dialog that opens.

  4. Click OK in the Choose Modules dialog.

    Arq07libraries javax inject

  5. Click OK in the Project Structure dialog.

Creating a folder for test sources

  1. In the project root folder, create the folder test.

  2. Right-click that folder, point to Mark Directory As and select Test Sources Root.

    Arq08project test

Creating a test class

  1. In the editor, position the caret within the name of the class Greeter.

  2. Click the light bulb Icons actions intention bulb Alt+Enter and select Create Test.

    Arq09greeter create test

  3. In the Create Test dialog that opens, select Arquillian JUnit4 from the Testing library list. Under Create test methods for, select the method that doesn't return a value greet. Click OK.
    Arq10dialog create test

    The new test class is shown in the Project tool window.

    Arq11project greeter test

    At the same time, the file GreeterTest.java opens in the editor.

    Arq12editor greeter test

    The initial content of the test class is defined by the corresponding template. You can edit that template on the Code tab of the File and Code Templates page in the Settings / Preferences dialog (Ctrl+Alt+S | Editor | File and Code Templates ).

Completing the code for the GreteerTest class

Here is the code for the test class in its final state:

package com.example.hello; import org.jboss.arquillian.container.test.api.Deployment; import org.jboss.arquillian.junit.Arquillian; import org.jboss.shrinkwrap.api.ShrinkWrap; import org.jboss.shrinkwrap.api.asset.EmptyAsset; import org.jboss.shrinkwrap.api.spec.JavaArchive; import org.junit.Assert; import org.junit.Test; import org.junit.runner.RunWith; import javax.inject.Inject; import static org.junit.Assert.*; @RunWith(Arquillian.class) public class GreeterTest { @Deployment public static JavaArchive createDeployment() { return ShrinkWrap.create(JavaArchive.class) .addClass(Greeter.class) .addAsManifestResource(EmptyAsset.INSTANCE, "beans.xml"); } @Inject Greeter greeter; @Test public void greet() throws Exception { String name="Arquillian"; Assert.assertEquals("Hello, Arquillian!", greeter.createGreeting(name)); greeter.greet(System.out, name); } }
  1. To insert a proper import statement for @Inject, type @Inj and select @Inject (javax.inject).

    Arq13editor greeter test inject

  2. Add the remaining code by copying.

    Arq14editor greeter test complete

Creating a run configuration for running the test

  1. To the left of public class GreeterTest, click Run two green arrows and select Run 'GreeterTest'.

    Arq15editor run greeter test

  2. In the Edit configuration dialog that opens, click Configure.

    Arq16edit configuration

  3. In the Arquillian Containers dialog, click Icons general add, point to Embedded and select GlassFish Embedded 3.1. (We'll start by running the test in an embedded container.)

    Arq17arquillian containers

  4. In the Edit configuration dialog, select GlassFish Embedded 3.1.

    Arq18edit configuration

Running the test in an embedded container

  1. In the Edit configuration dialog, click Run.

    The Run tool window opens and, after some time, the test result is shown there.

    Arq19test result
  2. Close the Run tool window by clicking Icons actions close.

Editing the run configuration: adding a managed container

Now let's change our run configuration so that it could be used for running the test in a managed container.

  1. Click the run configuration selector and select Edit Configurations.

    Arq20edit configurations

  2. In the Run/Debug Configurations dialog, click Configure.

    Arq21edit configurations dialog

  3. In the Arquillian Containers dialog, click the Add button and select Manual container configuration.

  4. Change the name of the configuration (for example to GlassFish Managed ).

  5. Under Dependencies, click the Add button and select Add maven dependency.

  6. In the Download Library From Maven Repository dialog, type arquillian-glassfish-managed-3.1 and click Icons actions find. Then select org.jboss.arquillian.container:arquillian-glassfish-managed-3.1:1.0.0.CR4 from the list.

    Select the Download to checkbox and click OK.

    Arq22download library from maven

    At this step, your Arquillian Containers dialog should look something like this:

    Arq23arquillian containers

    Click OK.

  7. In the Run/Debug Configurations dialog, select GlassFish Managed and click OK.

    Arq24run configurations dialog

Creating the arquillian.xml configuration file

To be able to run an Arquillian test in a managed container, the container adapter needs to know the container location. So let's create the arquillian.xml configuration file with the necessary info.

  1. In the project root folder, create the folder test-resources.

  2. Right-click the new folder, point to Mark Directory As and select Test Resources Root.

  3. In the test-resources folder, create a new file arquillian.xml.

    Arq25project arquillian xml

  4. Copy the following into the file:

    <?xml version="1.0"?> <arquillian xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://jboss.org/schema/arquillian" xsi:schemaLocation="http://jboss.org/schema/arquillian http://jboss.org/schema/arquillian/arquillian_1_0.xsd"> <container qualifier="glassfish" default="true"> <configuration> <property name="glassFishHome">C:\GlassFish\glassfish4</property> </configuration> </container> </arquillian>
    Arq26editor arquillian xml

    Use your actual path to the GlassFish Server installation folder in place of C:\GlassFish\glassfish4.

Running the test in a managed container

  1. To the right of the run configuration selector, click Icons toolwindows tool window run.
    Arq27glass fish managed run

    The Run tool window opens and the test result is shown there.

    Arq28test result
  2. Close the tool window Icons actions close.

Modifying arquillian.xml

Sometimes, you need to deploy your test to a container that is already running. In such cases, you can just change the container configuration file a little and continue using the managed container adapter.

Add the following to arquillian.xml:

<property name="allowConnectingToRunningServer">true</property>
Arq29editor arquillian xml

Running the test: deploying to a running server

  1. Start GlassFish Server: select GlassFish and click Icons toolwindows tool window run.
    Arq30select glass fish

    When the server is started, you'll see something like this in the Run tool window.

    Arq31glass fish started
  2. Select GlassFish Managed: GreeterTest and click Icons toolwindows tool window run.
    Arq32select greeter test

    After some time, the test result is shown in the Run tool window.

    Arq33test result
Last modified: 23 April 2021