За последние несколько лет я занимался кодированием на разных языках. В большинстве случаев (кроме POC) мне приходилось писать тестовые примеры для себя. Иногда мне приходилось писать тестовые примеры и для другого кода [Я очень его ненавижу].
При настройке тестовой среды возникает множество проблем. Здесь я объясню, как настроить базовую тестовую среду для модульного тестирования для известных языков программирования.
NodeJs / JavaScript: сегодня наиболее часто используемым языком является JavaScript. Благодаря экосистеме node js и ее простоте у нас есть множество фреймворков / инструментов для создания строительных лесов. Легко настроить любую среду.
Для создания полноценного рабочего сетапа можно использовать генераторы типа Yeoman. Некоторые другие фреймворки, такие как React, Angular, предоставляют настройку тестовой среды сгенерированным кодом. Для React чаще всего используется генератор create-react-app. Вы получаете всю настройку по умолчанию.
Однако для базовой настройки вы можете выполнить следующие шаги.
Предпосылка:
Шаги:
- Создайте структуру папок, как показано ниже:
- Создайте util.js и добавьте функцию в директорию
src
- Создайте тестовый файл в тестовой папке [Имя должно содержать .test.js]
- Инициируйте
npm package
и установитеjest
среду тестирования
Структура папки:
$ mkdir src test //util.js exports.add = (a, b) => a+b $ npm init --y ## install jest testing framework $ npm i --save-dev jest
Добавьте базовые тесты и повторите попытку:
//util.test.js const {add} = require("../")describe("Util.js", () => { it("should able to add", () =>{ expect(add(1,1)).toBe(2) }) it("should fail to add", () =>{ expect(add(1,1)).toBe(3) }) })
Запустите тестовый пример:
Вывод:
$ npx jest
Подробнее: https://github.com/deepakshrma/unit-test--setup-in-all-languages/tree/master/javascript
Java: вторым по популярности языком является Java. Благодаря такому инструменту, как Gradle, установка стала такой простой. Всякий раз, когда я думаю о своих былых временах, меня все еще мучает мурашка от боли.
Предпосылка:
- "Ява"
- Gradle [v5.5.1 и выше]
Шаги:
- Создайте папку, выполните команду ниже и следуйте инструкциям.
После запуска gradle init
выберите соответствующие параметры:
3. library -> 3. java -> 1. Groovy -> 1 Junit 4 <-| Enter <-| Enter
## Create lib using gradle
$ md java_code
$ gradle init
## --> 3: library --> 3: Java --> 1: Groovy --> 1: JUnit 4 --> enter <-| --> enter <-|
Запуск теста:
## run test case
$ ./gradlew test
Подробнее: https://github.com/deepakshrma/unit-test--setup-in-all-languages/tree/master/java_code
Python: я использовал Python в качестве языка сценариев. У меня никогда не было возможности использовать Python в качестве полнофункционального языка. Во время настройки мне было очень сложно настроить тест для простой функции. До сих пор я все еще не знаю, какой фреймворк нужно настроить. Но мне удалось запустить несколько базовых тестовых примеров.
Предпосылка:
Шаги:
- Создайте папку и добавьте исходный код. добавить
util.py
иtest_util.py
$ md project && md project/src
&& cd $_$ vi
util.py // util.py def add(a, b): return a+b$ vi
test_util.py // test_util.py import util def test_answer(): assert util.add(1,1) == 2 def test_answerFail(): assert util.add(1,1) == 3
2. Установите модуль pytest
с помощью pip
$ pip install -U pytest
3. Запустить тестовый пример
$ pytest -q src/test_util.py
Подробнее: https://github.com/deepakshrma/unit-test--setup-in-all-languages/tree/master/python
Rust: Недавно начал программировать на Rust. Это мощный язык и в то же время очень простой. В отличие от java, C, C ++ Вам не нужно много церемоний. Мне это очень нравится. Карго упрощает все.
Предпосылка:
- "Ржавчина"
- Карго
Шаги:
- Создать библиотеку с помощью Cargo
- Напишите тестовый код в том же файле
- Запустить тестовый пример
## Create lib using cargo
$ cargo new rust_lang --lib
// src/lib.rs
mod util {
pub fn add(a:i32, b:i32) -> i32 {
a+b
}
}
// test code in same file
#[cfg(test)]mod tests {
use super::*;
#[test]
fn it_works() {
assert_eq!(util::add(1,1), 2);
}
#[test]
fn it_will_works() {
assert_eq!(util::add(1,1), 3);
}
}
Запустить тестовый пример:
$ cargo test -- --nocapture
Подробнее: https://github.com/deepakshrma/unit-test--setup-in-all-languages/tree/master/rust_lang
Go-lang: Go - один из наиболее часто используемых языков. Я сделал несколько POC в GoLang. Как я уже упоминал, выполняя POC, я избегаю (не пишу) тестовых примеров. Однако я попробовал. Настройка тестовой среды была для меня очень болезненной. Даже установка GOPATH сбивает с толку. Однако мне это удалось. Вот следующие шаги, которые вы можете выполнить.
Шаги:
- Создайте папку util / и test /
- Скопируйте папку, чтобы перейти к модулю пути
- Запустить тестовый пример
## Create folder util/ and test/
// util/lib.go
package util
/// Test function Add
func Add(a int, b int) int {
return a + b
}
//test/
lib_test.go
package test
import (
"testing"
util "github.com/xdeepakv/go_lang/util"
)
func TestAddPass(t *testing.T) {
got := util.Add(1, 1)
if got != 2 {
t.Errorf("Add not working properly")
}
}
func TestAddFail(t *testing.T) {
got := util.Add(1, 2)
if got != 2 {
t.Errorf("Add not working properly")
}
}
Попытка1
cd go_lang go test -v ./test/
Проверьте Go
путь, Скопируйте папку, чтобы перейти в модуль пути
## Check go path $ echo $GOPATH ## Default would be ~/go ## Copy folder to go path module $ cp -R ../go_lang $GOPATH/src/github.com/xdeepakv $ cd $GOPATH/src/github.com/xdeepakv/go_lang
Запустите тестовый пример:
$ go test -v ./test/
Подробнее: https://github.com/deepakshrma/unit-test--setup-in-all-languages/tree/master/go_lang
Обновлено: 13 ноября
Swift: быстро создать библиотеку с помощью диспетчера пакетов. Однако написать тестовый пример для меня было непростой задачей. Я никогда не использовал XCTest
. Так что мне было трудно найти правильный путь. Чтобы создать библиотеку утилит, вы можете выполнить следующие шаги:
Предпосылка:
- Swift 5.1+
Шаги:
- Создайте библиотеку с помощью пакета swift
- Тесты / utilTests / utilTests.swift
## Create lib using swift package $ md util && swift package init --type library // util/util.swift public class Util { public class func add(_ a: Int, _ b: Int) -> Int { return a+b } } // Tests/utilTests/utilTests.swift func testExample() { XCTAssertEqual(Util.add(1,2), 2) }
Запустите тестовый пример:
$ swift test
Подробнее: https://github.com/deepakshrma/unit-test--setup-in-all-languages/tree/master/swift_code
Лучший пример: https://medium.com/quick-code/lets-build-a-command-line-app-in-swift-328ce274f1cc
Я все еще изучаю другие языки. Я обновлю шаги для этих языков позже. Если вашего programming language
нет, дайте мне знать. Я все еще пытаюсь найти лучший способ написать unit testing
. Если у вас есть предложения, дайте мне знать.
#Cheers #KeepCoding
Весь исходный код можно найти на Github: