blob: 58f80e9f457d2e3da37c217a94b87c0c034e3899 [file] [log] [blame] [view]
---
id: functions-debug-unit-test
title: Debug with unit test
sidebar_label: "Debug with unit test"
description: Learn to debug functions with unit test in Pulsar.
---
Like any function with inputs and outputs, you can test Pulsar Functions in a similar way as you test any other function.
:::note
Pulsar uses TestNG for testing.
:::
For example, if you have the following function written through the language-native interface for Java:
```java
import java.util.function.Function;
public class JavaNativeExclamationFunction implements Function<String, String> {
@Override
public String apply(String input) {
return String.format("%s!", input);
}
}
```
You can write a simple unit test to test the function.
```java
@Test
public void testJavaNativeExclamationFunction() {
JavaNativeExclamationFunction exclamation = new JavaNativeExclamationFunction();
String output = exclamation.apply("foo");
Assert.assertEquals(output, "foo!");
}
```
The following example is written through the Java SDK.
```java
import org.apache.pulsar.functions.api.Context;
import org.apache.pulsar.functions.api.Function;
public class ExclamationFunction implements Function<String, String> {
@Override
public String process(String input, Context context) {
return String.format("%s!", input);
}
}
```
You can write a unit test to test this function and mock the `Context` parameter as follows.
```java
@Test
public void testExclamationFunction() {
ExclamationFunction exclamation = new ExclamationFunction();
String output = exclamation.process("foo", mock(Context.class));
Assert.assertEquals(output, "foo!");
}
```