Test Project and Testdata Directories
测试夹具创建一个测试项目环境.
除非您自定义项目创建,否则测试项目将有一个模块,其中一个源根名为src
.
测试项目的文件存在于临时目录或内存文件系统中,具体取决于[TempDirTestFixture
]的实现(upsource:///platform/testFramework/src/com/intellij/testFramework/fixtures
使用/TempDirTestFixture.java).
LightPlatformCodeInsightFixtureTestCase
使用内存实现;
如果通过调用IdeaTestFixtureFactory.createCodeInsightFixture
来设置测试环境,则可以指定要使用的实现.
在您的插件中,您通常会在testdata
目录中存储测试的测试数据(例如将在其上执行插件功能的文件和预期的输出文件).
这只是插件内容根目录下的一个目录,但不在源根目录下.
testdata
中的文件通常不是有效的源代码,不得编译.
要指定testdata
的位置,必须覆盖LightPlatformCodeInsightFixtureTestCase.getTestDataPath()
方法.
默认实现假定作为 IntelliJ Platform 源代码树的一部分运行,不适用于第三方插件.
要将文件或目录从testdata
目录复制到测试项目目录,可以使用[CodeInsightTestFixture
]中的copyFileToProject()
和copyDirectoryToProject()
方法(upsource:///platform/testFramework/
src/com/intellij/testFramework/fixtures/CodeInsightTestFixture.java)类.
插件测试中的大多数操作都需要在内存编辑器中打开文件,其中将执行突出显示,完成和其他操作.
内存编辑器实例由CodeInsightTestFixture.getEditor()
返回.
要将文件从testdata
目录复制到测试项目目录并立即在编辑器中打开它,可以使用CodeInsightTestFixture.configureByFile()
或configureByFiles()
方法.
后者将多个文件复制到测试项目目录,并在内存编辑器中打开它们的* first *.
或者,您可以使用其他方法之一,这些方法带有用@@ TestDataFile注释的参数.
这些方法将指定文件从testdata
目录复制到测试项目目录,打开内存编辑器中的第一个指定文件,然后执行请求的操作,如突出显示或代码完成.
在内存编辑器中打开文件时,文件内容中的特殊标记可用于指定插入符号位置或选择. 您可以使用以下标记之一:
-
<caret>
指定插入符号的位置. -
<selection>
和</selection>
指定要选择的文本范围的开始和结束. -
<block>
和</block>
指定列选择的起点和终点.