Как мне провести модульное тестирование этой функции в Котлине? - PullRequest
0 голосов
/ 06 ноября 2019

Я довольно новичок в модульном тестировании. Мне дали задание проверить этот код. Я понимаю, что я должен использовать assertEquals, чтобы проверить, если, например, RegionData.Key.DEV возвращает VZCRegion.Development. Любая помощь будет оценена.

fun fromCakeSliceRegion(cakeSliceIndex: RegionData.Key): VZCRegion {

    return when (cakeSliceIndex) {
        RegionData.Key.DEV -> VZCRegion.Development
        RegionData.Key.EU_TEST -> VZCRegion.EuropeTest
        RegionData.Key.US_TEST -> VZCRegion.UnitedStatesTest
        RegionData.Key.US_STAGING -> VZCRegion.UnitedStatesStage
        RegionData.Key.EU_STAGING -> VZCRegion.EuropeStage
        RegionData.Key.LOCAL, RegionData.Key.EU_LIVE -> VZCRegion.Europe
        RegionData.Key.AP_LIVE, RegionData.Key.US_LIVE -> VZCRegion.UnitedStates
        RegionData.Key.PERFORMANCE, RegionData.Key.PERFORMANCE -> VZCRegion.Performance
    }

Ответы [ 2 ]

0 голосов
/ 06 ноября 2019

Прежде всего, добро пожаловать в stackoverflow!

Чтобы начать работу с модульным тестированием, я рекомендую вам прочитать о них в целом, хорошая отправная точка, другой ответ stackoverflow

Теперь вернемся к вашему тесту. Вам следует создать тестовый класс в вашей тестовой директории , а не в вашем основном пакете.

Класс может выглядеть как

import org.junit.After
import org.junit.Assert
import org.junit.Before
import org.junit.Test

class TestCakeSlice {
    @Before
    fun setUp() {
        // this will run before every test
        // usually used for common setup between tests
    }

    @After
    fun tearDown() {
        // this will run after every test
        // usually reset states, and cleanup
    }

    @Test
    fun testSlideDev_returnsDevelopment() {
        val result = fromCakeSliceRegion(RegionData.Key.DEV)

        Assert.assertEquals(result, VZCRegion.Development)
    }

    @Test
    fun `fun fact you can write your unit tests like this which is easier to read`() {
        val result = fromCakeSliceRegion(RegionData.Key.DEV)

        Assert.assertEquals(result, VZCRegion.Development)
    }
}
0 голосов
/ 06 ноября 2019

В целом, Testclass в Kotlin выглядит следующим образом:

import org.junit.Assert.assertTrue
class NodeTest {

    @Test
    fun neighbourCountValidation(){
        //This is a snipped of my test class, apply your tests here.
        val testNode = Node(Point(2,0))
        assertTrue(testNode.neighbourCount()==0)
    }
}

Для каждого класса, который вы хотите протестировать, создайте еще один класс Test. Теперь для каждого варианта использования создайте метод, который будет проверять это поведение. В моем случае я хотел проверить, нет ли у нового узла соседей.

Убедитесь, что вы внедрили окружение junit в свой build.gradle

Надеюсь, вы сможете применить эту конструкцию к вашей проблеме

...