吊索测试用例SERVER端

时间:2013-06-06 05:20:07

标签: unit-testing testing junit integration-testing sling

我正在为服务器端编写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);
        }

    }

2 个答案:

答案 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());
}

}