Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unit testing 如何在Dart编辑器中运行单元测试?_Unit Testing_Dart_Dart Editor - Fatal编程技术网

Unit testing 如何在Dart编辑器中运行单元测试?

Unit testing 如何在Dart编辑器中运行单元测试?,unit-testing,dart,dart-editor,Unit Testing,Dart,Dart Editor,我在Dart编辑器中有一个web应用程序项目,我想为它编写一些单元测试。我试图在同一个项目中用一个简单的单元测试创建.dart文件(带有main函数等),但在上下文菜单中,我只有“作为javascript运行”和“在dartium中运行”选项(当我单击其中任何一个时,都不会发生任何事情)。如何从Dart编辑器以控制台应用程序的形式运行unittest?进行此类测试最方便的方法是什么?您说您有一个web应用程序项目,所以希望测试代码在浏览器中运行? 我从来没有体验过,对于控制台应用程序,以java

我在Dart编辑器中有一个web应用程序项目,我想为它编写一些单元测试。我试图在同一个项目中用一个简单的单元测试创建.dart文件(带有main函数等),但在上下文菜单中,我只有“作为javascript运行”和“在dartium中运行”选项(当我单击其中任何一个时,都不会发生任何事情)。如何从Dart编辑器以控制台应用程序的形式运行unittest?进行此类测试最方便的方法是什么?

您说您有一个web应用程序项目,所以希望测试代码在浏览器中运行? 我从来没有体验过,对于控制台应用程序,
以javascript运行,或者
以Dartium运行。您是否在此dart文件中导入了“dart:html”

不管怎样,这也许能回答你的问题:

您可以使用
content\u shell
运行unittests测试web代码
Dart安装目录包含一个用于下载
content\u shell
的脚本(Dart安装包中不包含使其保持小型的脚本)

您实际上运行了一个HTML页面:

content\u shell--dump render tree\u ajax.html
我没有尝试过,但是当您使用

pub build test
您应该能够使用
content\u shell
运行结果
DartEditor没有显示bash脚本的运行选项(只是尝试过),因此您需要构建一个包含
content\u shell
的Dart脚本


Dart团队最近多次提到,他们希望改进测试故事,但运行/构建的基础设施仍在进行中。当这个问题解决后,我想下一步将进行测试支持。

好的,我将描述最适合我的解决方案。 我在Dart编辑器中为测试创建了单独的项目(polymer web应用程序-与目标项目相同)。测试项目中的Main
.html
文件导入的
.dart
文件如下所示:

library foo_test;
import '../../foo_project/web/foo.dart'; //test target
import '../packages/mock/mock.dart';
import '../packages/unittest/unittest.dart';
import '../packages/unittest/html_config.dart';

void main() {
    useHtmlConfiguration();

    test("sample test", () {
        expect(foo_function(), equals(expected_result) );
    });
}

useHtmlConfiguration()
创建了一些漂亮的页面,列出了所有测试。我还尝试了
useHtmlEnhancedConfiguration()
,如中所述,但它不打印堆栈跟踪(无论是在页面中还是在控制台中),因此它对我来说毫无用处。文档中也有
useHtmlInteractiveConfiguration()
,但它不存在于
unittest
包中。

我实际上遇到了与问题中描述的完全相同的问题。经过一番搜索,我发现我的目录结构不正确

我的目录结构如下:

/projectname
  /web
    index.html
    main.dart
    /test
      test_file.dart
这是错误的。我将目录结构更改为以下内容:

/projectname
  /web
    index.html
    main.dart
  /test
    test_file.dart
如您所见,我将
/test
目录从
/web
目录中移出。一旦我这样做了,我现在就可以右键单击
test_file.dart
文件,并在上下文菜单中选择“运行”(不是“以javascript方式运行”或“在dartium中运行”),并在dart编辑器的内置控制台中查看正在运行的测试

有关更多信息:完整的发布包布局约定可在此处找到:


有关dart中单元测试的信息可以在这里找到:(包括为html输出等内容配置测试环境)。

我遇到了完全相同的问题。我想在模拟了UI元素之后对我的小部件(来自dart编辑器v1.3.3)的行为进行单元测试,但发现,因为我导入了dart:html,所以我被迫运行测试,就好像它们是一个带有“在浏览器中运行”菜单选项的web应用程序一样

似乎只要导入dart:html或一个这样做的包,您就必须使用单元测试的“在浏览器中运行”选项(创建另一个包来测试原始包也不能解决问题,出于同样的原因,它必须导入dart:html)。是的,尝试使用“在浏览器中运行”选项运行常规的单元测试只会悄悄地失败,并且完全不起任何作用

简单的解决方案是使用html文件来运行测试。如果愿意,您可以调整单元测试以输出到网页,但这不是必需的

test.html


单元测试结果

测试.省道

//用于说明问题。导入dart:html原因
//上下文菜单仅显示“在浏览器中运行”选项。
导入“dart:html”;
导入“包:unittest/unittest.dart”;
//如果要使用useHtmlConfiguration(),则为必需。
导入“package:unittest/html_config.dart”;
void main(){
//如果要输出单元测试结果,则需要
//转到HTML页面而不是控制台。
使用HTMLConfiguration();
test('simple test',()=>expect(true,isTrue,reason:'true不是true”);
}

我没有导入dart:html,但导入了导入dart:html的库(测试目标)。我只是瞎猜怎么做。我将尝试
content\u shell
。无论如何,很高兴听到测试对dart团队很重要。