我有一个Polymer Dart应用程序,在开发过程中,它经历了这两个阶段:
阶段1:它工作(功能完整并且构建正常),但没有自动测试。 (因此,为了保证它的行为与它假设的行为相同,我必须手动单击某个按钮,在某些输入字段中键入一些文本,才能看到它的行为正确。)
阶段2:我在应用程序中添加了一些测试代码,使用unittest包来测试应用程序是否正常工作。该测试针对未编译的dart代码,在pub build
之前在Dartium中运行。然后我添加了一个变换器lib/transformer.dart
,这样,当pub build
时,我的变换器将删除应用程序中所有与测试相关的代码,因此Polymer,dart2js和其他变换器将看到他们看到的完全相同的代码在第1阶段,除第1阶段外,没有lib/transformer.dart
。
我的问题是:
一个。 (对于第1阶段)我应该担心dart版本和编译的js版本之间的一致性吗?即,我可以安全地假设,如果我的代码在dart版本中正常工作,它将在js版本中正常工作吗?
B中。假设我的变压器完全按照它的预期去做,即删除所有新添加的测试相关代码(当然除了变换器本身),也就是说,我的应用程序的js版本已经在第1阶段正常工作,第2阶段的js版本也能正常工作吗?
注意:为什么我在dart版本而不是js版本中运行测试?因为我不知道如何在没有将测试代码引入js版本的情况下,即我不希望js版本包含测试代码。
感谢。
答案 0 :(得分:1)
B:因为我猜不适用。
当您将单元测试代码放在your_package/test
中时,您无需担心生产中的测试代码。如果您明确地执行(pub build test
),则此代码仅针对JS构建,而不是默认情况下(pub build
)。
your_package/lib
,your_package/web
,your_package/bin
中的生产代码不应包含任何测试代码。
如果是的话,你可能做错了什么。
您应该为JavaScript构建测试,并使用您定位的每个版本中的每个浏览器测试您的应用程序。