運行環境zend studio 7.1.1
此版本ide對phpunit支持還不夠好,配置文件phpunit.xml還不能支持.得看看7.2如何.
沒辦法只有修改JLoaderTest_Class 此類了.
add :
protected function setUp() {
include_once 'tests\unit\bootstrap.php';
}
主要測試如下兩個方法:
調用庫類比較簡單:
JLoader::import( 'joomla.error.error' );
JLoader::import( 'joomla.error.exception' );
一定要以'joomla'開頭,實際上JLoader::import還有另外兩個參數
$base指路徑,$key只是個key,會同$key+$filePath 連接起來,作為數組的key緩存.
/**
* Loads a class from specified directories.
*
* @param string $name The class name to look for ( dot notation ).
* @param string $base Search this directory for the class.
* @param string $key String used as a prefix to denote the full path of the file ( dot notation ).
* @return void
* @since 1.5
*/
function import( $filePath, $base = null, $key = 'libraries.' )
function test_import()
{
$r = JLoader::import('joomla.factory');
$this -> assertTrue($r);
}
/** function import($filePath, $base = test dir, $key = null) */
function test_import_base()
{
// $testLib = 'joomla._testdata.loader-data';
// $this -> assertFalse(defined('JUNIT_DATA_JLOADER'), 'Test set up failure.');
// $r = JLoader::import($testLib, dirname(__FILE__));
// if ($this -> assertTrue($r)) {
// $this -> assertTrue(defined('JUNIT_DATA_JLOADER'));
// }
//
// // retry
// $r = JLoader::import($testLib, dirname(__FILE__));
// $this->assertTrue($r);
if(!defined('DS')) {
define( 'DS', DIRECTORY_SEPARATOR );
}
$r = JLoader::import("tests.unit.suite.libraries.index2");
$this->assertFalse($r);
$r = JLoader::import("index2");
$this->assertFalse($r);
$r = JLoader::import("unit.suite.libraries.index2",'tests','random.tests.');
// $this->assertTrue($r);
$this->assertEquals(1,$r);
$r = JLoader::import("tests.unit.suite.libraries.index2",'','custom0.');
$this->assertFalse($r);
$r = JLoader::import("tests.unit.suite.libraries.index2",null,'custom1.');
$this->assertFalse($r);
//這個地方需要注意
//import 自己的腳本會比較麻煩,得至少設置$base,總感覺怪怪的.本來覺得綠色的部分是可以的,還是返回false.
}
其實問題就出在:
function import( $filePath, $base = null, $key = 'libraries.' )
{
static $paths;
if (!isset($paths)) {
$paths = array();
}
$keyPath = $key ? $key . $filePath : $filePath;
if (!isset($paths[$keyPath]))
{
if ( ! $base ) {//問題在這里
$base = dirname( __FILE__ );
}
$parts = explode( '.', $filePath );
$classname = array_pop( $parts );
switch($classname)
{
case 'helper' :
$classname = ucfirst(array_pop( $parts )).ucfirst($classname);
break;
default :
$classname = ucfirst($classname);
break;
}
//條件語句的問題,準確說是boolean的問題.寫一測試腳本如下:
<?php
if(!'')
echo "chedan0\n";
if(!"")
echo "chedan1\n";
if(!null)
echo "chedan2\n";
if(!0)
echo "bie chedan0\n";
if(!1)
echo "bie chedan1\n";
if(!false)
echo "bie chedan2\n";
結果如下:
Content-type: text/html
chedan0
chedan1
chedan2
bie chedan0
bie chedan2
看來import方法考慮還不是挺周全.難道都要這樣子作$r = JLoader::import("unit.suite.libraries.index2",'tests','random.tests.');
本來我的包名是tests.unit.suite.libraries 腳本是index2.php,真是有噶怪.
另外include()方法成功返回1,所以上面就有 $this->assertEquals(1,$r); JLoader::import 既有可能return true,又有可能return 1,看來腳本還是太靈活了,容易迷惑人.
分享到:
相关推荐
public class MySQLConnectionExample { public static void main(String[] args) { String url = "jdbc:mysql://localhost:3306/mydatabase"; String username = "root"; String password = "password"; try ...
- **javac**: Java编译器,将源代码编译成可执行的字节码(.class文件)。 - **java**: Java解释器,负责运行编译后的Java类文件。 - **jar**: Jar工具,用于创建、修改和提取Java档案(JAR)文件。 - **javadoc**: ...
Classes contained in spring-mock.jar: org.springframework.mock.jndi.ExpectedLookupTemplate.class org.springframework.mock.jndi....org.springframework.test.web.AbstractModelAndViewTests.class
java 工具包, async-http-client-1.6.3.jar com.google.gson.DefaultDateTypeAdapter.class com.google.gson.ExclusionStrategy.class com.google.gson.FieldAttributes.class ...
### 关于"Test.class文件"的知识点解析 #### 标题理解:Test.class文件 - **定义**:“Test.class”文件是指通过Java编译器(javac)将Java源代码文件(例如“Test.java”)编译后生成的字节码文件。 - **作用**:...
标题中的“vault-hook-externalclass-test-3.1.6.zip”表明这是一个软件包,具体是针对Vault Hook的外部类测试的版本3.1.6。Vault通常指的是HashiCorp的Vault,它是一个用于安全存储和获取敏感信息的工具,如API密钥...
这是纯PHP编写的 HashTreeDB 类似...2. test_gen.php - 测试脚本, 生成全部 5位数字对应的 md5 值组成的数据库 00000 ~ 99999 (10万条记录) 生成文件 5MB 3. test_query.php - 测试查询 4. test_draw.php - 绘出树图
在使用ASP .NET应用程序操作Excel、Word等Office软件时,有时会在IIS服务器上部署应用过程中遇到错误:“Retrieving the COM class factory for component with CLSID {00024500-0000-0000-C000-000000000046}”。...
<filter-class>com.thetransactioncompany.cors.CORSFilter</filter-class> <init-param> <param-name>cors.allowGenericHttpRequests</param-name> <param-value>true</param-value> </init-param> <init-...
在`test`目录下的文件通常是一些示例代码或测试脚本,它们展示了如何使用PHPMailer发送邮件的基本流程,对于初学者来说,这些示例是理解和学习PHPMailer的绝佳起点。 使用PHPMailer发送邮件时,需要正确配置SMTP...
<servlet-class>org.jboss.resteasy.plugins.server.servlet.HttpServlet30Dispatcher</servlet-class> <servlet-mapping> <servlet-name>Resteasy</servlet-name> <url-pattern>/app/service/*</url-...
例如,`@RunWith(Suite.class)`可以将多个测试类组合为一个测试套件,`@Category`可以将测试分类,方便进行分组执行。 在实际开发中,这些库经常与其他依赖管理工具(如Maven或Gradle)一起使用,通过配置pom.xml或...
在这个名为“Test-lights-member-class.rar”的压缩包中,包含了一个名为“Test lights member class.vi”的LabVIEW程序,它主要展示了如何利用LabVIEW的类设计功能来实现对信号灯的模拟测试。 LabVIEW中的类是面向...
《Arquillian Container Test API详解及其在Java测试中的应用》 Arquillian Container Test API,作为Java企业级应用测试框架的重要组成部分,为开发者提供了一种高效、强大的方式来执行容器内的集成测试。这个API...
spring-test.jar 用在junit4以上 在类上写 @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(locations={"WIN-INF/config/applicationContext.xml" })
javax.servlet.jsp.jstl-api-1.2.1.jar
public class MySQLDemo { public static void main(String[] args) { try { Class.forName("com.mysql.jdbc.Driver"); Connection conn = DriverManager.getConnection( "jdbc:mysql://localhost:3306/...
json-schema-to-class tests/test_schema.json --indent 2 | pygmentize # or generate to file json-schema-to-class tests/test_schema.json -o tests/schema_build.py # generate code with __repr__ method json...
e:\test\testview.h(21) : error C2501: 'CTestDoc' : missing storage-class or type specifiers e:\test\testview.h(21) : error C2501: 'GetDocument' : missing storage-class or type specifiers Error ...