`

JLoader-0000-class-Test.php 測試

阅读更多

運行環境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,看來腳本還是太靈活了,容易迷惑人.

 

分享到:
评论

相关推荐

    mysql-connector-java-5.1.40.tar.gz

    public class MySQLConnectionExample { public static void main(String[] args) { String url = "jdbc:mysql://localhost:3306/mydatabase"; String username = "root"; String password = "password"; try ...

    jdk-8u152-linux-x64.tar.gz 【jdk1.8,jdk8,linux 64位版】

    - **javac**: Java编译器,将源代码编译成可执行的字节码(.class文件)。 - **java**: Java解释器,负责运行编译后的Java类文件。 - **jar**: Jar工具,用于创建、修改和提取Java档案(JAR)文件。 - **javadoc**: ...

    spring-mock.jar

    Classes contained in spring-mock.jar: org.springframework.mock.jndi.ExpectedLookupTemplate.class org.springframework.mock.jndi....org.springframework.test.web.AbstractModelAndViewTests.class

    async-http-client-1.6.3.jar com.ning.http.client.jar

    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文件 - **定义**:“Test.class”文件是指通过Java编译器(javac)将Java源代码文件(例如“Test.java”)编译后生成的字节码文件。 - **作用**:...

    vault-hook-externalclass-test-3.1.6.zip

    标题中的“vault-hook-externalclass-test-3.1.6.zip”表明这是一个软件包,具体是针对Vault Hook的外部类测试的版本3.1.6。Vault通常指的是HashiCorp的Vault,它是一个用于安全存储和获取敏感信息的工具,如API密钥...

    hdb-0.1.zip_4 3 2 1_md5

    这是纯PHP编写的 HashTreeDB 类似...2. test_gen.php - 测试脚本, 生成全部 5位数字对应的 md5 值组成的数据库 00000 ~ 99999 (10万条记录) 生成文件 5MB 3. test_query.php - 测试查询 4. test_draw.php - 绘出树图

    【Excel】Retrieving the COM class factory for component with CLSID

    在使用ASP .NET应用程序操作Excel、Word等Office软件时,有时会在IIS服务器上部署应用过程中遇到错误:“Retrieving the COM class factory for component with CLSID {00024500-0000-0000-C000-000000000046}”。...

    cors-filter-1.7.jar 和 java-property-utils-1.9.jar

    &lt;filter-class&gt;com.thetransactioncompany.cors.CORSFilter&lt;/filter-class&gt; &lt;init-param&gt; &lt;param-name&gt;cors.allowGenericHttpRequests&lt;/param-name&gt; &lt;param-value&gt;true&lt;/param-value&gt; &lt;/init-param&gt; &lt;init-...

    class.phpmailer.php

    在`test`目录下的文件通常是一些示例代码或测试脚本,它们展示了如何使用PHPMailer发送邮件的基本流程,对于初学者来说,这些示例是理解和学习PHPMailer的绝佳起点。 使用PHPMailer发送邮件时,需要正确配置SMTP...

    jaxrs-api,javax.ws.rs.Path;

    &lt;servlet-class&gt;org.jboss.resteasy.plugins.server.servlet.HttpServlet30Dispatcher&lt;/servlet-class&gt; &lt;servlet-mapping&gt; &lt;servlet-name&gt;Resteasy&lt;/servlet-name&gt; &lt;url-pattern&gt;/app/service/*&lt;/url-...

    junit-4.12.jar hamcrest-library-1.3.rc2.jar hamcrest-core-1.3.rc2.jar

    例如,`@RunWith(Suite.class)`可以将多个测试类组合为一个测试套件,`@Category`可以将测试分类,方便进行分组执行。 在实际开发中,这些库经常与其他依赖管理工具(如Maven或Gradle)一起使用,通过配置pom.xml或...

    Test-lights-member-class.rar_labview class

    在这个名为“Test-lights-member-class.rar”的压缩包中,包含了一个名为“Test lights member class.vi”的LabVIEW程序,它主要展示了如何利用LabVIEW的类设计功能来实现对信号灯的模拟测试。 LabVIEW中的类是面向...

    arquillian-container-test-api.jar.zip

    《Arquillian Container Test API详解及其在Java测试中的应用》 Arquillian Container Test API,作为Java企业级应用测试框架的重要组成部分,为开发者提供了一种高效、强大的方式来执行容器内的集成测试。这个API...

    spring-test.jar

    spring-test.jar 用在junit4以上 在类上写 @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(locations={"WIN-INF/config/applicationContext.xml" })

    javax.servlet.jsp.jstl-api-1.2.1.jar

    javax.servlet.jsp.jstl-api-1.2.1.jar

    mysql-connector-java-5.1.7-bin.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:将JSON模式转换为Python类

    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...

    MFC视图切换问题(CTestDoc* GetDocument();)

    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 ...

Global site tag (gtag.js) - Google Analytics