```java
public class Calculator {
public int add(int a, int b) {
return a + b;
}
public int subtract(int a, int b) {
return a - b;
}
}
```
```java
import org.testng.Assert;
import org.testng.annotations.*;
public class CalculatorTest {
private Calculator calculator;
@BeforeClass
public void setUp() {
calculator = new Calculator();
}
@AfterClass
public void tearDown() {
calculator = null;
}
@DataProvider(name = "testData")
public Object[][] testData() {
return new Object[][]{{1, 2, 3}, {-1, -2, -3}, {0, 0, 0}};
}
@Test(dataProvider = "testData")
public void testAdd(int a, int b, int expected) {
int result = calculator.add(a, b);
Assert.assertEquals(result, expected);
}
@Test(dataProvider = "testData")
public void testSubtract(int a, int b, int expected) {
int result = calculator.subtract(a, b);
Assert.assertEquals(result, expected);
}
}
```
```xml
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="TestNG Example" verbose="1">
<test name="CalculatorTest">
<classes>
<class name="CalculatorTest" />
</classes>
</test>
</suite>
```