установки: arquillian, JBoss, как 7.1.1.final, как управляемый контейнерПроверка удаленного поиск клиента JNDI с помощью arquillian
В настоящее время я мигрирующее приложение EJB из EJB 2.x до 3.x и JBoss 3. x к JBoss AS 7.1. Во время этого процесса я хотел бы получить большинство классов под испытанием и наткнулся на аркиллиан. Хотя arquillian, кажется, предлагает некоторые приятные функции для межобщинных функций, я не могу понять, работает ли тестирование удаленных клиентских функций с помощью jndi-запросов.
Я использовал начальные руководства Arquillian для моих боб, которые работали, но поскольку они используют @Inject, и в моем приложении jndi lookups используются везде, где я (по крайней мере, думаю, что i) должны отклоняться от этого пути.
Здесь TestCase i создан на основе Arquillian Getting Started. Я явно оставил во всех попытках использование jndi-свойств, о которых я думал, что они могут помочь.
Тест
should_create_greeting()
работает, если боб Greeter с помощью отдельного производителя.
@RunWith(Arquillian.class)
public class GreeterTest {
public static final String ARCHIVE_NAME = "test";
Logger logger = Logger.getLogger(GreeterTest.class.getName());
@Deployment
public static Archive<?> createDeployment() {
JavaArchive jar = ShrinkWrap.create(JavaArchive.class, ARCHIVE_NAME + ".jar").addPackage(Greeter.class.getPackage())
.addAsManifestResource("test-persistence.xml", "persistence.xml").addAsManifestResource("OracleGUIDS-ds.xml")
.addAsManifestResource(EmptyAsset.INSTANCE, "beans.xml");
return jar;
}
/**
* @Inject works using a producer with {@code @Produces}
*/
// @Inject
// Greeter greeter;
@ArquillianResource
Context context;
GreeterRemote greeter;
@Before
public void before() throws Exception {
Map<String, String> env = new HashMap<>();
env.put(Context.INITIAL_CONTEXT_FACTORY, "org.jboss.as.naming.InitialContextFactory");
env.put("jboss.naming.client.ejb.context", "true");
// env.put("jboss.naming.client.connect.options.org.xnio.Options.SASL_POLICY_NOPLAINTEXT",
// "false");
// env.put("jboss.naming.client.connect.options.org.xnio.Options.SASL_POLICY_NOANONYMOUS",
// "false");
// env.put("jboss.naming.client.connectionprovider.create.options.org.xnio.Options.SSL_ENABLED",
// "false");
for (Map.Entry<String, String> entry : env.entrySet()) {
context.addToEnvironment(entry.getKey(), entry.getValue());
}
greeter = (GreeterRemote) context.lookup(ARCHIVE_NAME + "/" + Greeter.class.getSimpleName() + "!"
+ GreeterRemote.class.getName());
}
@Test
public void should_create_greeting() {
Assert.assertEquals("Hello, Earthling!", greeter.createGreeting("Earthling"));
greeter.greet(System.out, "Earthling");
}
}
Можно ли получить этот тест работает с JNDI поиска? Я что-то упускаю?
Благодарит Вас за Ответить. Это работает при использовании управляемого сервера, на котором я развертываюсь для конкретного теста, или мне нужно иметь сервер с развертыванием? Мне бы очень хотелось, чтобы во время тестов на управляемый сервер разворачивались бобы, а затем выполнялись некоторые тесты против них. Но если я попробую это, например, используя два развертывания, я не могу получить доступ к компонентам удаленно. –