如何编写需要大量测试案例的测试

Let's say I have a list that has about 210000 english words.

  • I need to use all these 210000 words as test case.
  • I need to make sure every words in that list is covered every time I run my test.

The question is: What is the best practices to store these words in my test?

should I save all these words in a slice (will it be too large a slice? ), or should I save these words in a external file (like words.txt) and load the file line by line when needed?

Test data is usually stored in a directory named testdata to keep it separate from the other source code or data files (see the docs from the command go help test). The go tool ignores stuff inside that directory.

210,000 words should take up only single digit megabytes of RAM anyway, which isn't much. Just have a helper function that reads the words from the file before each test (perhaps caching them), or define a TestMain() function which reads them once and stores them in a global variable for access by tests that are subsequently run.

Edit: Regarding best practices, it's sometimes nicer to store test data in testdata even if the data isn't large. For example, I sometimes need to use multiple short JSON snippets in test cases, and perhaps use them more than once. Storing them in appropriately named files under a subdirectory of testdata can be more readable than littering Go code with a bunch of JSON snippets.

The slight loss of performance is generally not an issue in tests. Whichever method makes the code easier to understand could be the 'best practice'.