public function getFileName() {
        $isTestClass = substr($this->getName(), -4) == 'Test';
        if($isTestClass) {
            $rootDirectory = $this->getConfiguration()->getRootTestDirectory();
        } else {
            $rootDirectory = $this->getConfiguration()->getRootDirectory();
        }
        if(substr($this->getNamespace(), 0, strlen($this->getConfiguration()->getRootNamespace())) != $this->getConfiguration()->getRootNamespace()) {
            throw new \Exception('The Root namespace does not match this classes namespace, could not get the file name'."\n".$this->getNamespace()."\n".$this->getConfiguration()->getRootNamespace());
        }
        if($isTestClass) {
            $namespace = $this->getNamespace();
        } else {
            $namespace = substr($this->getNamespace(), strlen($this->getConfiguration()->getRootNamespace()));
        }
        if(DIRECTORY_SEPARATOR != '\\') {
            $namespace = str_replace('\\', DIRECTORY_SEPARATOR, $namespace);
        }
        return $rootDirectory . DIRECTORY_SEPARATOR . $namespace . DIRECTORY_SEPARATOR . $this->getName() . '.php';
    }