def METHOD_NAME(self, test_data, device, args):
    model = self.model
    model.to(device)
    model.eval()
    metrics = {"test_correct": 0, "test_loss": 0, "test_total": 0}
    criterion = nn.CrossEntropyLoss().to(device)
    with torch.no_grad():
        for batch_idx, (x, target) in enumerate(test_data):
            x = x.to(device)
            target = target.to(device)
            pred = model(x)
            loss = criterion(pred, target)  # pylint: disable=E1102
            _, predicted = torch.max(pred, -1)
            correct = predicted.eq(target).sum()
            metrics["test_correct"] += correct.item()
            metrics["test_loss"] += loss.item() * target.size(0)
            metrics["test_total"] += target.size(0)
    return metrics