Specify a Test Suite for Your Project

Problem

You need to create a suite of tests that you can run using Pants' test goal.

Solution

For Scala or Java, create a junit_tests target definition that defines your suite; for Python, create a python_tests definition. For both target types, you need to specify:

  • A name for the Pants target
  • A list of sources specifying which files contain the tests themselves
  • A list of dependencies (which in many cases will include only the library being tested but could include others)
  • A list of resources (optional). More info can be found in Create a Resource Bundle

Below is an example junit_tests definition followed by a python_tests definition:

junit_tests(name='scala-tests',
  sources=rglobs('*.scala'),
  dependencies=[
    'myproject/src/main/scala',
  ]
)

python_tests(name='python-tests',
  sources=globs('*.py'),
  dependencies=[
    'myproject/src/python',
  ]
)

Now you can run the test using the Pants test goal like this:

$ ./pants test myproject/src/tests:scala-tests
Generated by publish_docs from dist/markdown/html/src/docs/common_tasks/test_suite.html 2018-05-03T17:02:31.550153