我正在为服务器端编写sling单元测试用例,我的测试包是通过使用以下代码从客户端进入junit servlet来运行的。我的测试需要一个正在运行的FTP服务器,我希望通过使用@before并通过@after或任何其他最佳方式清理转储来嵌入到此函数中,如何使用调用的runnable测试类执行此操作一个junit servlet。
@RunWith(SlingRemoteTestRunner.class)
public class FTPImporterTest extends SlingTestBase implements SlingRemoteTestParameters, SlingTestsCountChecker {
/**
*
*/
public static final String TEST_SELECTOR = "com.my.proj.FTPImporterTesting.FTPImporterServerTest";
public static final int TESTS_AT_THIS_PATH = 3;
/**
*
*/
public int getExpectedNumberOfTests() {
return TESTS_AT_THIS_PATH;
}
public String getJunitServletUrl() {
return getServerBaseUrl() + "/system/sling/junit";
}
public String getTestClassesSelector() {
return TEST_SELECTOR;
}
public String getTestMethodSelector() {
return null;
}
public void checkNumberOfTests(int i) {
Assert.assertEquals(TESTS_AT_THIS_PATH, i);
}
}
答案 0 :(得分:0)
其中一种可能的方法是使用Mockito framework。
以下是使用Mocktio in AEM
的示例答案 1 :(得分:0)
我建议使用Sling Teleporter Junit Rule的新方法。它允许编写在客户端运行的测试,但内部JUnit语句在客户端被替换,并在sling中传送,使用junit核心框架运行。
以下是文档中的示例:
public class BasicTeleporterTest {
@Rule
public final TeleporterRule teleporter = TeleporterRule.forClass(getClass(), "Launchpad");
@Test
public void testConfigAdmin() throws IOException {
final String pid = "TEST_" + getClass().getName() + UUID.randomUUID();
final ConfigurationAdmin ca = teleporter.getService(ConfigurationAdmin.class);
assertNotNull("Teleporter should provide a ConfigurationAdmin", ca);
final Configuration cfg = ca.getConfiguration(pid);
assertNotNull("Expecting to get a Configuration", cfg);
assertEquals("Expecting the correct pid", pid, cfg.getPid());
}
}