2013-04-22 75 views
2

使用飛鏢里程碑4版21658如何在單元測試中訪問飛鏢班

我是飛鏢新手。我創建了一個班。我想單元測試它。類和單元測試都在使用Dart編輯器創建的同一個Dart項目中。我不知道如何讓單元測試看到我的課。我怎樣才能做到這一點?

項目名稱: DartExp

目錄結構:

src/foo.dart 
test/foo_test.dart 

文件內容:

--- foo.dart開始----

//library foo; 

class Foo 
{ 
    String bar; 
} 

--- foo.dart結束----

--- foo.dart開始----

import 'package:unittest/unittest.dart'; 

import 'package:DartExp/foo.dart'; 
import 'DartExp/foo.dart'; 
import 'foo.dart'; 
import 'src/foo.dart'; 
import 'package:src/foo.dart'; 

main() { 

    test('test Foo',() { 

    Foo foo; 

    //expect(1,1); 
    }); 
} 

--- foo.dart結束----

事情我已經嘗試:

在飛鏢編輯器,在文件foo_test.dart,我都嘗試導入foo.dart被標記爲錯誤,因爲「...是不是有效的URI」。編輯還說Foo類是未定義的。 刪除所有foo.dart導入語句也不起作用。 將foo.dart放入庫中也不起作用。

Dart導入語句的文檔似乎沒有給出這個常見用例的任何示例。

那麼,你如何將一個類導入Dart的單元測試?

+0

@Greg:感謝您花時間回答我的問題。你的回答讓我看到(並糾正)我原來的問題陳述中的一個錯誤。單元測試foo_test.dart實際上在'test'目錄中,而不在'lib'中。對不起,錯誤的信息。 – devdanke 2013-04-23 03:36:17

回答

3

Dart使用Pub package manager進行依賴關係管理,並且具有特定的建議包版式,您可以閱讀關於on the Pub website的信息。

試試這個,也運行pub install

目錄結構:

pubspec.yaml 
lib/foo.dart 
test/foo_test.dart 

pubspec.yaml

name: my_package 
description: description 
dev_dependencies: 
    unittest: any 

LIB/foo.dart:

library foo; 

class Foo { 
} 

測試/ foo_test.dart:

import 'package:unittest/unittest.dart'; 
import 'package:foo/foo.dart'; 

main() { 
    test('test Foo',() { 
    Foo foo; 
    }); 
} 

package:網址是從酒吧創建packages目錄解析。爲了更好地理解這一點,在運行pub install之後,請查看packages目錄的內容。

所以這個:

import 'package:[package-name]/[file].dart'; 

導入一個庫,它是在一個名爲[package-name]的包,這個包在一個名爲[file].dart文件lib文件夾中找到。 (注意:一個包可以有多個庫。)

+0

我的Java影響的思想,我的Foo類不是一個庫。將它放在'src'目錄中似乎更好。如果類不應該在src中,那麼src是什麼? Dart Editor創建了src,所以我認爲它是一個標準目錄[lib,test,src,web] Dart的包管理器所期望的。你的回答也讓我問,是否所有的Dart班都被指定爲圖書館?謝謝你的幫助。 – devdanke 2013-04-23 03:39:07

+0

如果你正在製作一個軟件包,並且想導出你的庫,他們需要在lib中。 web是用於需要通過http訪問的文件,因此您的頂級飛鏢腳本。之前我沒有注意到src。雖然通常有一個lib/src來隱藏實現文件。我通常佈置我的文件,以便我可以與pub分享。但是,這可能不適用於每種類型的應用程序。對於約定,最好看看github,看看其他人在做什麼。 http://pub.dartlang.org/doc/package-layout.html – 2013-04-23 06:45:04

1

這些路徑中的任何一個都可以在Dart單元測試中使類Foo可訪問。 src/foo.dart不需要庫。但即使是這樣,兩種進口路徑仍然有效。

import '../src/foo.dart'; 
import 'package:../src/foo.dart'; 

順便提及,如28-四月-2013,[http://pub.dartlang.org/doc/package-layout.html] 不具有頂層SRC目錄(所以我猜,我的課是在一個非標準的目錄中)。

+0

這個技巧用於工作,但最近整個路徑方案在pub服務中發生了變化:/src/index.html轉換爲/index.html因此,此解決方案現在已經損壞,「加載/src/foo.dart時發生錯誤」。任何新的想法現在如何單元測試非庫代碼? – johsin18 2014-07-20 17:49:59