⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 extensiongeneratortest.java

📁 基于Junit的 功能和单元测试的的测试工具。只支持Swing.
💻 JAVA
字号:
package org.uispec4j.extension;

import org.uispec4j.utils.UnitTestCase;

import java.io.File;
import java.io.IOException;

public class ExtensionGeneratorTest extends UnitTestCase {
  private File output;

  protected void setUp() throws Exception {
    super.setUp();
    output = new File("tmp/extension.jar");
    output.getParentFile().mkdirs();
    output.delete();
  }

  public void testStandardGenerationUsageWithCustomClass() throws Exception {
    checkStandardGenerationUsage(CustomCountingButton.class);
  }

  public void testStandardGenerationUsageWithDerivedClass() throws Exception {
    checkStandardGenerationUsage(DerivedCountingButton.class);
  }

  public void testRunningTheGenerationOverAnExistingJarReplacesThePanelClass() throws Exception {
    checkRunningTheGenerationOverAnExistingJarReplacesThePanelClass(CustomCountingButton.class);
    checkRunningTheGenerationOverAnExistingJarReplacesThePanelClass(DerivedCountingButton.class);
  }

  public void checkStandardGenerationUsage(Class componentClass) throws Exception {
    ExtensionGenerator.main(new String[]{"tmp/extension.jar",
                                         "CountingButton:" + componentClass.getName() + ":"
                                         + JCountingButton.class.getName()});
    runCheckerClass(componentClass);
  }

  private void checkRunningTheGenerationOverAnExistingJarReplacesThePanelClass(Class componentClass) throws Exception {
    ExtensionGenerator.main(new String[]{"tmp/extension.jar",
                                         "MyButton:" + componentClass.getName() + ":"
                                         + JCountingButton.class.getName()});
    ExtensionGenerator.main(new String[]{"tmp/extension.jar",
                                         "CountingButton:" + componentClass.getName()
                                         + ":" + JCountingButton.class.getName()});
    runCheckerClass(componentClass);
  }

  private void runCheckerClass(Class componentClass) throws IOException, InterruptedException {
    String classpath =
      output.getAbsolutePath() +
      System.getProperty("path.separator") +
      System.getProperty("java.class.path");
    Process process =
      Runtime.getRuntime().exec(new String[]{"java",
                                             "-Xmx512m",
                                             "-classpath",
                                             classpath,
                                             GeneratedJarChecker.class.getName(),
                                             componentClass.getName()});
    StreamRecorder output = StreamRecorder.run(process.getInputStream());
    StreamRecorder error = StreamRecorder.run(process.getErrorStream());
    process.waitFor();

    // Workaround for Apple bug
    // http://developer.apple.com/releasenotes/Java/Java50Release4RN/OutstandingIssues/chapter_4_section_3.html
    if ("Mac OS X".equals(System.getProperty("os.name"))) {
      if (error.getResult().length() != 0) {
        assertEquals("_-_-_ _:_:_._ java[_] CFLog (_): CFMessagePort: bootstrap_register(): failed _ (_), port = _, name = 'java.ServiceProvider'\n" +
                     "See /usr/include/servers/bootstrap_defs.h for the error codes.\n" +
                     "_-_-_ _:_:_._ java[_] CFLog (_): CFMessagePortCreateLocal(): failed to name Mach port (java.ServiceProvider)",
                     error.getResult().replaceAll("[0-9][\\w]*", "_"));
      }
    }
    else {
      assertEquals("", error.getResult());
    }
    assertEquals("OK", output.getResult());
  }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -