universal-tester


Nameuniversal-tester JSON
Version 1.1.1 PyPI version JSON
download
home_pageNone
SummaryAI-powered automatic test case generation for Java and Kotlin projects with Web UI and CLI
upload_time2025-10-24 03:23:08
maintainerNone
docs_urlNone
authorNone
requires_python>=3.8
licenseApache-2.0
keywords testing test-generation junit java kotlin ai llm automation spring-boot mockito
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # Universal Tester - AI-Powered Test Generation

[![PyPI version](https://badge.fury.io/py/universal-tester.svg)](https://pypi.org/project/universal-tester/)
[![Python 3.8+](https://img.shields.io/badge/python-3.8+-blue.svg)](https://www.python.org/downloads/)
[![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0)

**Automatically generate high-quality JUnit tests for Java and Kotlin projects using AI - with complete code privacy using local LLMs.**

Universal Tester leverages Large Language Models (LLMs) to understand your code and create comprehensive test suites with proper mocking, assertions, and edge case coverage. It comes with both a **Command-Line Interface (CLI)** and a **Web UI** for maximum flexibility.

## 🔒 Unique Security Feature

## 🔒 Unique Security Feature

**Your Code Never Leaves Your Machine!**

Unlike other AI testing tools that send your code to cloud services, Universal Tester supports **Ollama** - a runtime platform that lets you run powerful open-source LLMs (Llama, Mistral, CodeLlama, etc.) entirely on your own computer.

**Why This Matters:**
- ✅ **Complete Privacy**: Your proprietary source code stays on your machine
- ✅ **100% Offline**: No internet required for test generation
- ✅ **Enterprise-Safe**: Complies with strict corporate security policies
- ✅ **Zero Trust Architecture**: No cloud providers can access your code
- ✅ **FREE**: No API costs - unlimited test generation at no charge
- ✅ **Compliance-Ready**: Meets requirements for regulated industries (healthcare, finance, government)

**You Have Options**: While Ollama provides maximum security through local LLM execution, you can also use Azure OpenAI or Google Gemini if your team prefers cloud-based models.

- ✅ **100% Offline Operation** with Ollama
- ✅ **No Cloud Uploads** - Your code stays on your machine
- ✅ **Enterprise-Safe** - Perfect for proprietary and sensitive codebases
- ✅ **FREE** - No API costs with local models
- ✅ **Your Choice** - Also supports Azure OpenAI and Google Gemini if preferred

---

## 🚀 Features

- ✅ **🔐 Local LLM Support (Ollama)**: Run any open-source LLM locally - your code never leaves your machine
- ✅ **Multi-LLM Support**: Azure OpenAI, Google Gemini, or Ollama (run LLMs locally/offline)
- ✅ **Smart Import Detection**: Automatic dependency analysis and import management
- ✅ **Two Interfaces**: CLI for automation, Web UI for interactive use
- ✅ **Java & Kotlin**: Full support for both languages
- ✅ **Multiple Frameworks**: JUnit 5, Mockito, MockK, Kotest
- ✅ **Spring Boot Ready**: Special handling for Spring annotations and dependency injection
- ✅ **Incremental Testing**: Generate tests for specific files or entire projects
- ✅ **Context-Aware**: Understands your code structure and dependencies
- ✅ **No Vendor Lock-in**: Switch between LLM providers anytime

---

## 📦 Installation

### Prerequisites

- **Python 3.8+** (Tested and certified on **Python 3.13.5**)
  - ⚠️ **Important**: Requires Python 3.8 or higher to avoid compatibility issues
  - ✅ **Certified on**: Python 3.13.5
  - 📋 **Compatible with**: Python 3.8, 3.9, 3.10, 3.11, 3.12, 3.13+ (based on dependencies)
- pip (Python package manager)
- LLM API access (Azure OpenAI, Google Gemini, or Ollama)

### Recommended: Use Virtual Environment

We strongly recommend using a virtual environment to avoid dependency conflicts:

```bash
# Create virtual environment
python -m venv universal-tester-env

# Activate on Windows
universal-tester-env\Scripts\activate

# Activate on Linux/Mac
source universal-tester-env/bin/activate

# Install universal-tester
pip install universal-tester
```

### Install from PyPI

```bash
pip install universal-tester
```

**That's it!** Both CLI and Web UI are included.

### Verify Installation

```bash
universal-tester --version
```

---

## 🎯 Quick Start

### 1. Configure Your LLM Provider

Copy `.env.example` to `.env` and configure:

```bash
# Ollama (FREE - Recommended for local development)
LLM_PROVIDER=ollama
OLLAMA_HOST=http://localhost:11434
OLLAMA_MODEL=llama3.1:8b

# OR Azure OpenAI
LLM_PROVIDER=azure_openai
AZURE_OPENAI_API_KEY=your-api-key
AZURE_OPENAI_ENDPOINT=https://your-endpoint.openai.azure.com/
AZURE_OPENAI_DEPLOYMENT=gpt-4

# OR Google Gemini
LLM_PROVIDER=google
GOOGLE_API_KEY=your-google-api-key
GOOGLE_MODEL=gemini-2.0-flash:generateContent
```

### 2. Generate Tests (CLI)

```bash
# Generate tests from a ZIP file
universal-tester --input /path/to/your-project.zip

# With custom output directory
universal-tester -i project.zip -o ./generated-tests
```

### 3. Or Use the Web UI

```bash
# Launch the web interface
universal-tester-ui
```

Then upload your ZIP file and click "Generate Tests"!

---

## 💡 Usage Examples

### CLI Examples

**Basic test generation:**
```bash
universal-tester --input myproject.zip
```

**Kotlin with MockK:**
```bash
universal-tester --input kotlin-app.zip --language kotlin --framework mockk
```

**Use specific LLM provider:**
```bash
universal-tester --input project.zip --llm-provider google
```

**Verbose mode:**
```bash
universal-tester --input project.zip --verbose
```

### Web UI

1. Start the UI: `universal-tester-ui`
2. Open `http://localhost:8000` in your browser
3. Upload your Java/Kotlin project (ZIP format)
4. Click "Generate Tests"
5. Download the generated test files

---

## 🎨 What Tests Look Like

**Input: `UserService.java`**
```java
@Service
public class UserService {
    @Autowired
    private UserRepository userRepository;
    
    public User findById(Long id) {
        return userRepository.findById(id)
            .orElseThrow(() -> new UserNotFoundException(id));
    }
}
```

**Generated: `UserServiceTest.java`**
```java
@ExtendWith(MockitoExtension.class)
class UserServiceTest {
    @Mock
    private UserRepository userRepository;
    
    @InjectMocks
    private UserService userService;
    
    @Test
    void findById_WhenUserExists_ReturnsUser() {
        // Arrange
        Long userId = 1L;
        User expectedUser = new User(userId, "John Doe");
        when(userRepository.findById(userId)).thenReturn(Optional.of(expectedUser));
        
        // Act
        User result = userService.findById(userId);
        
        // Assert
        assertNotNull(result);
        assertEquals(expectedUser.getId(), result.getId());
        assertEquals(expectedUser.getName(), result.getName());
        verify(userRepository).findById(userId);
    }
    
    @Test
    void findById_WhenUserNotFound_ThrowsException() {
        // Arrange
        Long userId = 999L;
        when(userRepository.findById(userId)).thenReturn(Optional.empty());
        
        // Act & Assert
        assertThrows(UserNotFoundException.class, () -> userService.findById(userId));
        verify(userRepository).findById(userId);
    }
}
```

---

## 🔧 Configuration

### Environment Variables

| Variable | Description | Required |
|----------|-------------|----------|
| `LLM_PROVIDER` | LLM provider: `azure`, `google`, or `ollama` | ✅ Yes |
| `AZURE_OPENAI_API_KEY` | Azure OpenAI API key | If using Azure |
| `AZURE_OPENAI_ENDPOINT` | Azure endpoint URL | If using Azure |
| `AZURE_OPENAI_DEPLOYMENT_NAME` | Azure deployment name | If using Azure |
| `GOOGLE_API_KEY` | Google Gemini API key | If using Google |
| `OLLAMA_BASE_URL` | Ollama server URL | If using Ollama |
| `OLLAMA_MODEL` | Ollama model name | If using Ollama |

### CLI Options

```bash
universal-tester [OPTIONS]

Options:
  -i, --input PATH       Input ZIP file path (required)
  -o, --output PATH      Output directory (default: ./generated_tests)
  --llm-provider TEXT    LLM provider override (azure/google/ollama)
  --language TEXT        Source language (java/kotlin)
  --framework TEXT       Test framework (junit/mockito/mockk/kotest)
  -v, --verbose          Enable verbose logging
  --version              Show version
  --help                 Show help message
```

---

## 📚 Documentation

- **[Complete User Guide](USER_GUIDE.md)** - Detailed documentation
- **[LLM Provider Setup](USER_GUIDE.md#llm-provider-setup)** - Configure Azure, Google, or Ollama
- **[Troubleshooting](USER_GUIDE.md#troubleshooting)** - Common issues and solutions
- **[FAQ](USER_GUIDE.md#faq)** - Frequently asked questions

---

## 🎯 Use Cases

### For Developers
- Quickly create test scaffolding for new code
- Improve test coverage on legacy code
- Learn testing best practices from generated examples
- Speed up TDD workflow

### For Teams
- Standardize test patterns across the codebase
- Onboard new team members with consistent test examples
- Reduce time spent writing boilerplate tests
- Focus on complex business logic testing

### For CI/CD
- Integrate into build pipelines
- Generate tests automatically on code commits
- Maintain test coverage metrics
- Automate test creation for new features

---

## 🌟 Why Universal Tester?

| Feature | Universal Tester | Manual Testing | Other Tools |
|---------|-----------------|----------------|-------------|
| Speed | ⚡ Seconds | 🐌 Hours | ⚡ Fast |
| Quality | ✅ AI-powered | 👤 Variable | ⚠️ Template-based |
| Customization | ✅ Flexible | ✅ Full control | ❌ Limited |
| LLM Choice | ✅ 3 providers | N/A | ❌ Usually locked |
| UI + CLI | ✅ Both | N/A | ⚠️ Usually one |
| Cost | 💰 Free + LLM API | 💰💰 Developer time | 💰💰💰 Expensive |

---

## 🔒 Privacy & Security

- **Your code stays yours**: Code is only sent to your chosen LLM provider
- **Use Ollama for local processing**: 100% offline operation available
- **No data storage**: We don't store or log your code
- **Open source**: Audit the code yourself (Apache 2.0 License)

---

## 🛠️ Requirements

- Python 3.8 or higher
- Access to an LLM provider:
  - **Azure OpenAI** (paid)
  - **Google Gemini** (paid, but has free tier)
  - **Ollama** (free, runs locally)

---

## 📊 Project Structure

```
universal-tester/
├── universal_tester/
│   ├── core.py                    # Main test generation logic
│   ├── cli.py                     # Command-line interface
│   ├── llm/
│   │   ├── factory.py             # Multi-LLM support
│   │   ├── health_check.py        # LLM health monitoring
│   │   └── java_validator.py     # Code validation
│   ├── detectors/
│   │   ├── enhanced_import_detector.py  # Java import detection
│   │   └── kotlin_import_detector.py    # Kotlin import detection
│   ├── prompts/
│   │   ├── prompt_builder.py      # LLM prompt construction
│   │   ├── system_prompts.py      # System-level prompts
│   │   └── ui_messages.py         # UI messages
│   └── ui/
│       ├── chainlit_ui.py         # Web UI implementation
│       └── main.py                # UI entry point
├── USER_GUIDE.md                  # Complete documentation
└── README.md                      # This file
```

---

## 🤝 Contributing

Contributions are welcome! Here's how:

1. Fork the repository
2. Create a feature branch: `git checkout -b feature/amazing-feature`
3. Commit your changes: `git commit -m 'Add amazing feature'`
4. Push to the branch: `git push origin feature/amazing-feature`
5. Open a Pull Request

---

## 📝 License

This project is licensed under the Apache License 2.0 - see the [LICENSE](LICENSE) file for details.

**Note on Commercial Use**: While the software is open source under Apache 2.0, commercial use requires a separate license. Contact senthilthepro@hotmail.com for commercial licensing.

**Patent Notice**: The author reserves all patent rights related to the concepts and methods embodied in this software.

---

## 🙏 Acknowledgments

- Built with [LangChain](https://langchain.com/)
- UI powered by [Chainlit](https://chainlit.io/)
- Inspired by the need for better automated testing tools

---

## 📧 Contact & Support

- **Author**: Senthil Kumar Thanapal
- **Email**: senthilthepro@hotmail.com
- **PyPI Package**: https://pypi.org/project/universal-tester/

---

## 🚀 Quick Links

- [PyPI Package](https://pypi.org/project/universal-tester/)
- [User Guide](USER_GUIDE.md)
- Documentation included in package

---

**Made with ❤️ for the testing community**

*Star ⭐ this repo if you find it useful!*

            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "universal-tester",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.8",
    "maintainer_email": null,
    "keywords": "testing, test-generation, junit, java, kotlin, ai, llm, automation, spring-boot, mockito",
    "author": null,
    "author_email": "Senthil Kumar Thanapal <senthilthepro@hotmail.com>",
    "download_url": "https://files.pythonhosted.org/packages/51/49/ead498efd15d7078a9f95b637dc8530492211e7245821058d802b483c365/universal_tester-1.1.1.tar.gz",
    "platform": null,
    "description": "# Universal Tester - AI-Powered Test Generation\r\n\r\n[![PyPI version](https://badge.fury.io/py/universal-tester.svg)](https://pypi.org/project/universal-tester/)\r\n[![Python 3.8+](https://img.shields.io/badge/python-3.8+-blue.svg)](https://www.python.org/downloads/)\r\n[![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0)\r\n\r\n**Automatically generate high-quality JUnit tests for Java and Kotlin projects using AI - with complete code privacy using local LLMs.**\r\n\r\nUniversal Tester leverages Large Language Models (LLMs) to understand your code and create comprehensive test suites with proper mocking, assertions, and edge case coverage. It comes with both a **Command-Line Interface (CLI)** and a **Web UI** for maximum flexibility.\r\n\r\n## \ud83d\udd12 Unique Security Feature\r\n\r\n## \ud83d\udd12 Unique Security Feature\r\n\r\n**Your Code Never Leaves Your Machine!**\r\n\r\nUnlike other AI testing tools that send your code to cloud services, Universal Tester supports **Ollama** - a runtime platform that lets you run powerful open-source LLMs (Llama, Mistral, CodeLlama, etc.) entirely on your own computer.\r\n\r\n**Why This Matters:**\r\n- \u2705 **Complete Privacy**: Your proprietary source code stays on your machine\r\n- \u2705 **100% Offline**: No internet required for test generation\r\n- \u2705 **Enterprise-Safe**: Complies with strict corporate security policies\r\n- \u2705 **Zero Trust Architecture**: No cloud providers can access your code\r\n- \u2705 **FREE**: No API costs - unlimited test generation at no charge\r\n- \u2705 **Compliance-Ready**: Meets requirements for regulated industries (healthcare, finance, government)\r\n\r\n**You Have Options**: While Ollama provides maximum security through local LLM execution, you can also use Azure OpenAI or Google Gemini if your team prefers cloud-based models.\r\n\r\n- \u2705 **100% Offline Operation** with Ollama\r\n- \u2705 **No Cloud Uploads** - Your code stays on your machine\r\n- \u2705 **Enterprise-Safe** - Perfect for proprietary and sensitive codebases\r\n- \u2705 **FREE** - No API costs with local models\r\n- \u2705 **Your Choice** - Also supports Azure OpenAI and Google Gemini if preferred\r\n\r\n---\r\n\r\n## \ud83d\ude80 Features\r\n\r\n- \u2705 **\ud83d\udd10 Local LLM Support (Ollama)**: Run any open-source LLM locally - your code never leaves your machine\r\n- \u2705 **Multi-LLM Support**: Azure OpenAI, Google Gemini, or Ollama (run LLMs locally/offline)\r\n- \u2705 **Smart Import Detection**: Automatic dependency analysis and import management\r\n- \u2705 **Two Interfaces**: CLI for automation, Web UI for interactive use\r\n- \u2705 **Java & Kotlin**: Full support for both languages\r\n- \u2705 **Multiple Frameworks**: JUnit 5, Mockito, MockK, Kotest\r\n- \u2705 **Spring Boot Ready**: Special handling for Spring annotations and dependency injection\r\n- \u2705 **Incremental Testing**: Generate tests for specific files or entire projects\r\n- \u2705 **Context-Aware**: Understands your code structure and dependencies\r\n- \u2705 **No Vendor Lock-in**: Switch between LLM providers anytime\r\n\r\n---\r\n\r\n## \ud83d\udce6 Installation\r\n\r\n### Prerequisites\r\n\r\n- **Python 3.8+** (Tested and certified on **Python 3.13.5**)\r\n  - \u26a0\ufe0f **Important**: Requires Python 3.8 or higher to avoid compatibility issues\r\n  - \u2705 **Certified on**: Python 3.13.5\r\n  - \ud83d\udccb **Compatible with**: Python 3.8, 3.9, 3.10, 3.11, 3.12, 3.13+ (based on dependencies)\r\n- pip (Python package manager)\r\n- LLM API access (Azure OpenAI, Google Gemini, or Ollama)\r\n\r\n### Recommended: Use Virtual Environment\r\n\r\nWe strongly recommend using a virtual environment to avoid dependency conflicts:\r\n\r\n```bash\r\n# Create virtual environment\r\npython -m venv universal-tester-env\r\n\r\n# Activate on Windows\r\nuniversal-tester-env\\Scripts\\activate\r\n\r\n# Activate on Linux/Mac\r\nsource universal-tester-env/bin/activate\r\n\r\n# Install universal-tester\r\npip install universal-tester\r\n```\r\n\r\n### Install from PyPI\r\n\r\n```bash\r\npip install universal-tester\r\n```\r\n\r\n**That's it!** Both CLI and Web UI are included.\r\n\r\n### Verify Installation\r\n\r\n```bash\r\nuniversal-tester --version\r\n```\r\n\r\n---\r\n\r\n## \ud83c\udfaf Quick Start\r\n\r\n### 1. Configure Your LLM Provider\r\n\r\nCopy `.env.example` to `.env` and configure:\r\n\r\n```bash\r\n# Ollama (FREE - Recommended for local development)\r\nLLM_PROVIDER=ollama\r\nOLLAMA_HOST=http://localhost:11434\r\nOLLAMA_MODEL=llama3.1:8b\r\n\r\n# OR Azure OpenAI\r\nLLM_PROVIDER=azure_openai\r\nAZURE_OPENAI_API_KEY=your-api-key\r\nAZURE_OPENAI_ENDPOINT=https://your-endpoint.openai.azure.com/\r\nAZURE_OPENAI_DEPLOYMENT=gpt-4\r\n\r\n# OR Google Gemini\r\nLLM_PROVIDER=google\r\nGOOGLE_API_KEY=your-google-api-key\r\nGOOGLE_MODEL=gemini-2.0-flash:generateContent\r\n```\r\n\r\n### 2. Generate Tests (CLI)\r\n\r\n```bash\r\n# Generate tests from a ZIP file\r\nuniversal-tester --input /path/to/your-project.zip\r\n\r\n# With custom output directory\r\nuniversal-tester -i project.zip -o ./generated-tests\r\n```\r\n\r\n### 3. Or Use the Web UI\r\n\r\n```bash\r\n# Launch the web interface\r\nuniversal-tester-ui\r\n```\r\n\r\nThen upload your ZIP file and click \"Generate Tests\"!\r\n\r\n---\r\n\r\n## \ud83d\udca1 Usage Examples\r\n\r\n### CLI Examples\r\n\r\n**Basic test generation:**\r\n```bash\r\nuniversal-tester --input myproject.zip\r\n```\r\n\r\n**Kotlin with MockK:**\r\n```bash\r\nuniversal-tester --input kotlin-app.zip --language kotlin --framework mockk\r\n```\r\n\r\n**Use specific LLM provider:**\r\n```bash\r\nuniversal-tester --input project.zip --llm-provider google\r\n```\r\n\r\n**Verbose mode:**\r\n```bash\r\nuniversal-tester --input project.zip --verbose\r\n```\r\n\r\n### Web UI\r\n\r\n1. Start the UI: `universal-tester-ui`\r\n2. Open `http://localhost:8000` in your browser\r\n3. Upload your Java/Kotlin project (ZIP format)\r\n4. Click \"Generate Tests\"\r\n5. Download the generated test files\r\n\r\n---\r\n\r\n## \ud83c\udfa8 What Tests Look Like\r\n\r\n**Input: `UserService.java`**\r\n```java\r\n@Service\r\npublic class UserService {\r\n    @Autowired\r\n    private UserRepository userRepository;\r\n    \r\n    public User findById(Long id) {\r\n        return userRepository.findById(id)\r\n            .orElseThrow(() -> new UserNotFoundException(id));\r\n    }\r\n}\r\n```\r\n\r\n**Generated: `UserServiceTest.java`**\r\n```java\r\n@ExtendWith(MockitoExtension.class)\r\nclass UserServiceTest {\r\n    @Mock\r\n    private UserRepository userRepository;\r\n    \r\n    @InjectMocks\r\n    private UserService userService;\r\n    \r\n    @Test\r\n    void findById_WhenUserExists_ReturnsUser() {\r\n        // Arrange\r\n        Long userId = 1L;\r\n        User expectedUser = new User(userId, \"John Doe\");\r\n        when(userRepository.findById(userId)).thenReturn(Optional.of(expectedUser));\r\n        \r\n        // Act\r\n        User result = userService.findById(userId);\r\n        \r\n        // Assert\r\n        assertNotNull(result);\r\n        assertEquals(expectedUser.getId(), result.getId());\r\n        assertEquals(expectedUser.getName(), result.getName());\r\n        verify(userRepository).findById(userId);\r\n    }\r\n    \r\n    @Test\r\n    void findById_WhenUserNotFound_ThrowsException() {\r\n        // Arrange\r\n        Long userId = 999L;\r\n        when(userRepository.findById(userId)).thenReturn(Optional.empty());\r\n        \r\n        // Act & Assert\r\n        assertThrows(UserNotFoundException.class, () -> userService.findById(userId));\r\n        verify(userRepository).findById(userId);\r\n    }\r\n}\r\n```\r\n\r\n---\r\n\r\n## \ud83d\udd27 Configuration\r\n\r\n### Environment Variables\r\n\r\n| Variable | Description | Required |\r\n|----------|-------------|----------|\r\n| `LLM_PROVIDER` | LLM provider: `azure`, `google`, or `ollama` | \u2705 Yes |\r\n| `AZURE_OPENAI_API_KEY` | Azure OpenAI API key | If using Azure |\r\n| `AZURE_OPENAI_ENDPOINT` | Azure endpoint URL | If using Azure |\r\n| `AZURE_OPENAI_DEPLOYMENT_NAME` | Azure deployment name | If using Azure |\r\n| `GOOGLE_API_KEY` | Google Gemini API key | If using Google |\r\n| `OLLAMA_BASE_URL` | Ollama server URL | If using Ollama |\r\n| `OLLAMA_MODEL` | Ollama model name | If using Ollama |\r\n\r\n### CLI Options\r\n\r\n```bash\r\nuniversal-tester [OPTIONS]\r\n\r\nOptions:\r\n  -i, --input PATH       Input ZIP file path (required)\r\n  -o, --output PATH      Output directory (default: ./generated_tests)\r\n  --llm-provider TEXT    LLM provider override (azure/google/ollama)\r\n  --language TEXT        Source language (java/kotlin)\r\n  --framework TEXT       Test framework (junit/mockito/mockk/kotest)\r\n  -v, --verbose          Enable verbose logging\r\n  --version              Show version\r\n  --help                 Show help message\r\n```\r\n\r\n---\r\n\r\n## \ud83d\udcda Documentation\r\n\r\n- **[Complete User Guide](USER_GUIDE.md)** - Detailed documentation\r\n- **[LLM Provider Setup](USER_GUIDE.md#llm-provider-setup)** - Configure Azure, Google, or Ollama\r\n- **[Troubleshooting](USER_GUIDE.md#troubleshooting)** - Common issues and solutions\r\n- **[FAQ](USER_GUIDE.md#faq)** - Frequently asked questions\r\n\r\n---\r\n\r\n## \ud83c\udfaf Use Cases\r\n\r\n### For Developers\r\n- Quickly create test scaffolding for new code\r\n- Improve test coverage on legacy code\r\n- Learn testing best practices from generated examples\r\n- Speed up TDD workflow\r\n\r\n### For Teams\r\n- Standardize test patterns across the codebase\r\n- Onboard new team members with consistent test examples\r\n- Reduce time spent writing boilerplate tests\r\n- Focus on complex business logic testing\r\n\r\n### For CI/CD\r\n- Integrate into build pipelines\r\n- Generate tests automatically on code commits\r\n- Maintain test coverage metrics\r\n- Automate test creation for new features\r\n\r\n---\r\n\r\n## \ud83c\udf1f Why Universal Tester?\r\n\r\n| Feature | Universal Tester | Manual Testing | Other Tools |\r\n|---------|-----------------|----------------|-------------|\r\n| Speed | \u26a1 Seconds | \ud83d\udc0c Hours | \u26a1 Fast |\r\n| Quality | \u2705 AI-powered | \ud83d\udc64 Variable | \u26a0\ufe0f Template-based |\r\n| Customization | \u2705 Flexible | \u2705 Full control | \u274c Limited |\r\n| LLM Choice | \u2705 3 providers | N/A | \u274c Usually locked |\r\n| UI + CLI | \u2705 Both | N/A | \u26a0\ufe0f Usually one |\r\n| Cost | \ud83d\udcb0 Free + LLM API | \ud83d\udcb0\ud83d\udcb0 Developer time | \ud83d\udcb0\ud83d\udcb0\ud83d\udcb0 Expensive |\r\n\r\n---\r\n\r\n## \ud83d\udd12 Privacy & Security\r\n\r\n- **Your code stays yours**: Code is only sent to your chosen LLM provider\r\n- **Use Ollama for local processing**: 100% offline operation available\r\n- **No data storage**: We don't store or log your code\r\n- **Open source**: Audit the code yourself (Apache 2.0 License)\r\n\r\n---\r\n\r\n## \ud83d\udee0\ufe0f Requirements\r\n\r\n- Python 3.8 or higher\r\n- Access to an LLM provider:\r\n  - **Azure OpenAI** (paid)\r\n  - **Google Gemini** (paid, but has free tier)\r\n  - **Ollama** (free, runs locally)\r\n\r\n---\r\n\r\n## \ud83d\udcca Project Structure\r\n\r\n```\r\nuniversal-tester/\r\n\u251c\u2500\u2500 universal_tester/\r\n\u2502   \u251c\u2500\u2500 core.py                    # Main test generation logic\r\n\u2502   \u251c\u2500\u2500 cli.py                     # Command-line interface\r\n\u2502   \u251c\u2500\u2500 llm/\r\n\u2502   \u2502   \u251c\u2500\u2500 factory.py             # Multi-LLM support\r\n\u2502   \u2502   \u251c\u2500\u2500 health_check.py        # LLM health monitoring\r\n\u2502   \u2502   \u2514\u2500\u2500 java_validator.py     # Code validation\r\n\u2502   \u251c\u2500\u2500 detectors/\r\n\u2502   \u2502   \u251c\u2500\u2500 enhanced_import_detector.py  # Java import detection\r\n\u2502   \u2502   \u2514\u2500\u2500 kotlin_import_detector.py    # Kotlin import detection\r\n\u2502   \u251c\u2500\u2500 prompts/\r\n\u2502   \u2502   \u251c\u2500\u2500 prompt_builder.py      # LLM prompt construction\r\n\u2502   \u2502   \u251c\u2500\u2500 system_prompts.py      # System-level prompts\r\n\u2502   \u2502   \u2514\u2500\u2500 ui_messages.py         # UI messages\r\n\u2502   \u2514\u2500\u2500 ui/\r\n\u2502       \u251c\u2500\u2500 chainlit_ui.py         # Web UI implementation\r\n\u2502       \u2514\u2500\u2500 main.py                # UI entry point\r\n\u251c\u2500\u2500 USER_GUIDE.md                  # Complete documentation\r\n\u2514\u2500\u2500 README.md                      # This file\r\n```\r\n\r\n---\r\n\r\n## \ud83e\udd1d Contributing\r\n\r\nContributions are welcome! Here's how:\r\n\r\n1. Fork the repository\r\n2. Create a feature branch: `git checkout -b feature/amazing-feature`\r\n3. Commit your changes: `git commit -m 'Add amazing feature'`\r\n4. Push to the branch: `git push origin feature/amazing-feature`\r\n5. Open a Pull Request\r\n\r\n---\r\n\r\n## \ud83d\udcdd License\r\n\r\nThis project is licensed under the Apache License 2.0 - see the [LICENSE](LICENSE) file for details.\r\n\r\n**Note on Commercial Use**: While the software is open source under Apache 2.0, commercial use requires a separate license. Contact senthilthepro@hotmail.com for commercial licensing.\r\n\r\n**Patent Notice**: The author reserves all patent rights related to the concepts and methods embodied in this software.\r\n\r\n---\r\n\r\n## \ud83d\ude4f Acknowledgments\r\n\r\n- Built with [LangChain](https://langchain.com/)\r\n- UI powered by [Chainlit](https://chainlit.io/)\r\n- Inspired by the need for better automated testing tools\r\n\r\n---\r\n\r\n## \ud83d\udce7 Contact & Support\r\n\r\n- **Author**: Senthil Kumar Thanapal\r\n- **Email**: senthilthepro@hotmail.com\r\n- **PyPI Package**: https://pypi.org/project/universal-tester/\r\n\r\n---\r\n\r\n## \ud83d\ude80 Quick Links\r\n\r\n- [PyPI Package](https://pypi.org/project/universal-tester/)\r\n- [User Guide](USER_GUIDE.md)\r\n- Documentation included in package\r\n\r\n---\r\n\r\n**Made with \u2764\ufe0f for the testing community**\r\n\r\n*Star \u2b50 this repo if you find it useful!*\r\n",
    "bugtrack_url": null,
    "license": "Apache-2.0",
    "summary": "AI-powered automatic test case generation for Java and Kotlin projects with Web UI and CLI",
    "version": "1.1.1",
    "project_urls": {
        "Documentation": "https://pypi.org/project/universal-tester/",
        "Homepage": "https://pypi.org/project/universal-tester/",
        "Repository": "https://pypi.org/project/universal-tester/"
    },
    "split_keywords": [
        "testing",
        " test-generation",
        " junit",
        " java",
        " kotlin",
        " ai",
        " llm",
        " automation",
        " spring-boot",
        " mockito"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "201fac6f0ed433be14915c76d6b36b90ee5390d9dc574bccc42244763c6f846d",
                "md5": "90903cfccb260083941efde71a9735b1",
                "sha256": "d293822acbe4c78d8974b31e59c9a9192413bd5770a52d20b6210dda5b971549"
            },
            "downloads": -1,
            "filename": "universal_tester-1.1.1-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "90903cfccb260083941efde71a9735b1",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.8",
            "size": 91833,
            "upload_time": "2025-10-24T03:23:07",
            "upload_time_iso_8601": "2025-10-24T03:23:07.658435Z",
            "url": "https://files.pythonhosted.org/packages/20/1f/ac6f0ed433be14915c76d6b36b90ee5390d9dc574bccc42244763c6f846d/universal_tester-1.1.1-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "5149ead498efd15d7078a9f95b637dc8530492211e7245821058d802b483c365",
                "md5": "8cb4ff9efe61f6796eb043c9d2f649eb",
                "sha256": "8e68c9a7b13e6cc20a8e8395a07db1940abdaec4d2c297565d5976d8813c16d0"
            },
            "downloads": -1,
            "filename": "universal_tester-1.1.1.tar.gz",
            "has_sig": false,
            "md5_digest": "8cb4ff9efe61f6796eb043c9d2f649eb",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.8",
            "size": 93758,
            "upload_time": "2025-10-24T03:23:08",
            "upload_time_iso_8601": "2025-10-24T03:23:08.852754Z",
            "url": "https://files.pythonhosted.org/packages/51/49/ead498efd15d7078a9f95b637dc8530492211e7245821058d802b483c365/universal_tester-1.1.1.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-10-24 03:23:08",
    "github": false,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "lcname": "universal-tester"
}
        
Elapsed time: 2.60604s