public function testGenerate() { $generator = new ClassGenerator('Abc\\Test'); $generator->setAbstract(true); $generator->addTrait('ATrait'); $generator->addUse('ATrait'); $generator->addTrait('BTrait'); $generator->setImplementedInterfaces(['ITestA', 'ITestB']); $generator->setExtendedClass('ParentClass'); $generator->addProperty('abc'); $generator->addMethod('bar'); $data = <<<EOF namespace Abc; use ATrait; abstract class Test extends ParentClass implements ITestA, ITestB { use ATrait, BTrait; public \$abc = null; public function bar() { } } EOF; $this->assertEquals($data, $generator->generate()); }