Skip to main content

Run your tests with the Bun test runner

还没翻译译自英文(bun.com)本页 9 段都还没译

Bun has a built-in test runner with a Jest-like expect API.


To use it, run bun test from your project directory. The test runner recursively searches for files matching the following patterns and runs the tests they contain.

*.test.{js|jsx|ts|tsx|mjs|cjs|mts|cts}
*_test.{js|jsx|ts|tsx|mjs|cjs|mts|cts}
*.spec.{js|jsx|ts|tsx|mjs|cjs|mts|cts}
*_spec.{js|jsx|ts|tsx|mjs|cjs|mts|cts}

Here's the output of a typical run: three test files (test.test.js, test2.test.js, and test3.test.js), each containing two tests (add and multiply).

bun test
test.test.js:
✓ add [0.87ms]
✓ multiply [0.02ms]

test2.test.js:
✓ add [0.72ms]
✓ multiply [0.01ms]

test3.test.js:
✓ add [0.54ms]
✓ multiply [0.01ms]

 6 pass
 0 fail
 6 expect() calls
Ran 6 tests across 3 files. [9.00ms]

To only run certain test files, pass a positional argument to bun test. The runner only executes files with that argument in their path.

bun test test3
test3.test.js:
✓ add [1.40ms]
✓ multiply [0.03ms]

 2 pass
 0 fail
 2 expect() calls
Ran 2 tests across 1 file. [15.00ms]

Every test has a name: the first argument to the test function. You can also group tests into suites with describe.

import { test, expect, describe } from "bun:test";

describe("math", () => {
  test("add", () => {
    expect(2 + 2).toEqual(4);
  });

  test("multiply", () => {
    expect(2 * 2).toEqual(4);
  });
});

To filter tests by name, use the -t/--test-name-pattern flag.

-t add only runs tests with "add" in the name. The pattern matches test names defined with test and suite names defined with describe.

bun test -t add
test.test.js:
✓ add [1.79ms]

test2.test.js:
✓ add [2.30ms]

test3.test.js:
✓ add [0.32ms]

 3 pass
 3 filtered out
 0 fail
 3 expect() calls
Ran 3 tests across 3 files. [59.00ms]

See bun test.

번역 © 2026 fanyi.dev · 원문 © 2026 the Bun project (LICENSE.md names no copyright holder) (MIT)