2013-04-22 86 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