---
title: "Test(_:_:arguments:_:)"
framework: testing
role: symbol
role_heading: Macro
path: "testing/test(_:_:arguments:_:)"
---

# Test(_:_:arguments:_:)

Declare a test parameterized over two collections of values.

## Declaration

```swift
@attached(peer) macro Test<C1, C2>(_ displayName: String? = nil, _ traits: any TestTrait..., arguments collection1: C1, _ collection2: C2) where C1 : Collection, C1 : Sendable, C2 : Collection, C2 : Sendable, C1.Element : Sendable, C2.Element : Sendable
```

## Parameters

- `displayName`: The customized display name of this test. If the value of this argument is nil, the display name of the test is derived from the associated function’s name.
- `traits`: Zero or more traits to apply to this test.
- `collection1`: A collection of values to pass to testFunction.
- `collection2`: A second collection of values to pass to testFunction.

## Overview

Overview You can prefix the expressions you pass to collection1 or collection2 with try or await. The testing library evaluates the expressions lazily only if it determines that the associated test will run. During testing, the testing library calls the associated test function once for each pair of elements in collection1 and collection2.

## See Also

### Related Documentation

- [Defining test functions](testing/definingtests.md)

### Test parameterization

- [Implementing parameterized tests](testing/parameterizedtesting.md)
- [Test(_:_:arguments:)](testing/test(_:_:arguments:)-8kn7a.md)
- [Test(_:_:arguments:)](testing/test(_:_:arguments:)-3rzok.md)
- [CustomTestArgumentEncodable](testing/customtestargumentencodable.md)
- [Test.Case](testing/test/case.md)
