📄 extensiongeneratortest.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 + -