/* * Copyright (c) MuleSoft, Inc. All rights reserved. http://www.mulesoft.com * The software in this package is published under the terms of the CPAL v1.0 * license, a copy of which has been included with this distribution in the * LICENSE.txt file. */ package org.mule.test.infrastructure.process.rules; import org.mule.test.infrastructure.process.MuleProcessController; import org.junit.rules.ExternalResource; /** * This is a JUnit rule to start and stop Mule Runtime during tests. Usage: * <p/> * * <pre> * public static class MuleStandaloneIntegrationTests { * * @Rule * public MuleStandalone standalone = new MuleStandalone("/path/to/mule/home"); * * @Test * public void integrationTest() throws IOException { * MuleProcessController mule = standalone.getMule(); * assertThat(mule.isRunning(), is(true)); * } * } * </pre> */ public class MuleStandalone extends ExternalResource { private final MuleProcessController mule; private String[] args; public MuleStandalone(String muleHome) { mule = new MuleProcessController(muleHome); } public MuleStandalone(String muleHome, String... args) { mule = new MuleProcessController(muleHome); this.args = args; } @Override protected void before() throws Throwable { mule.start(args); } @Override protected void after() { mule.stop(); } public MuleProcessController getMule() { return mule; } }