其实我是PHP新手。我从一个几乎空的文件夹中运行它(实际上遵循Lara-casts教程:使用TDD设计Fluent API)。
我的目录结构类似于
在composer.json里面:
Exception in thread "Animation Thread" java.lang.RuntimeException: java.lang.RuntimeException: Framebuffer objects are not supported by this hardware (or driver) Read http://wiki.processing.org/w/OpenGL_Issues for help.
at com.jogamp.common.util.awt.AWTEDTExecutor.invoke(AWTEDTExecutor.java:58)
at jogamp.opengl.awt.AWTThreadingPlugin.invokeOnOpenGLThread(AWTThreadingPlugin.java:103)
at jogamp.opengl.ThreadingImpl.invokeOnOpenGLThread(ThreadingImpl.java:206)
at javax.media.opengl.Threading.invokeOnOpenGLThread(Threading.java:172)
at javax.media.opengl.Threading.invoke(Threading.java:191)
at javax.media.opengl.awt.GLCanvas.display(GLCanvas.java:541)
at processing.opengl.PJOGL.requestDraw(PJOGL.java:688)
at processing.opengl.PGraphicsOpenGL.requestDraw(PGraphicsOpenGL.java:1651)
at processing.core.PApplet.run(PApplet.java:2256)
at java.lang.Thread.run(Unknown Source)
Inside ExpressionTest.php:
{
"require-dev": {
"phpunit/phpunit": "^5.2"
},
"autoload": {
"psr-4": {
"": "src/"
}
}
}
Inside Expression.php
class ExpressionTest extends PHPUnit_Framework_TestCase
{
/** @test */
public function it_finds_a_string()
{
$regex = Expression::make()->find('www');
$this->assertRegExp($regex, 'www');
}
}
然后我运行composer dump-autoload并运行phpunit,但我仍然得到:
<?php
class Expression
{
}
我的语法有问题吗?我对Composer的理解非常基础。提前谢谢。
答案 0 :(得分:1)
您需要在测试的顶部包含自动加载器。它通常在
require __DIR__ . '/vendor/autoload.php';
您还可以添加一个phpunit.xml文件告诉它自动加载器的位置然后它会在每次测试之前运行它:
<phpunit
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="http://schema.phpunit.de/5.2/phpunit.xsd"
bootstrap="/path/to/bootstrap.php"
</phpunit>
答案 1 :(得分:1)
PHPUnit本身并不了解Composer,因此如果不配置PHPUnit,它将无法了解您的自动加载器设置。
尝试使用--bootstrap vendor/autoload.php
运行PHPunit,告诉它加载自动加载文件。
如果这不起作用,请检查Composer配置中的命名空间值(即"": "src/"
可能需要更改。)