package com.josketres.builderator; import org.junit.Assert; import org.junit.Test; import test.classes.NormalJavaBean; import javax.tools.JavaCompiler; import javax.tools.ToolProvider; import java.io.File; import java.io.FileWriter; import java.io.IOException; public class RendererTest { private static final int COMPILER_SUCCESS_CODE = 0; @Test public void test() throws IOException { MetadataExtractor generator = new MetadataExtractor(NormalJavaBean.class); String source = new Renderer().render(generator.getMetadata()); File root = File.createTempFile("java", null); root.delete(); root.mkdirs(); String packageDirs = NormalJavaBean.class.getPackage().getName().replace(".", System.getProperty("file.separator")); File packageFolder = new File(root, packageDirs); packageFolder.mkdirs(); File sourceFile = new File(packageFolder, NormalJavaBean.class.getName().replace(".", System.getProperty("file.separator")) + "Builder.java"); sourceFile.getParentFile().mkdirs(); FileWriter fileWriter = null; try { fileWriter = new FileWriter(sourceFile); fileWriter.append(source); } finally { if (fileWriter != null) { fileWriter.close(); } } JavaCompiler compiler = ToolProvider.getSystemJavaCompiler(); int result = compiler.run(null, System.out, System.err, sourceFile.getPath()); Assert.assertEquals(COMPILER_SUCCESS_CODE, result); } }