Autofixture: Saran: ikuti gaya "Arrange Act Assert" untuk tes

Dibuat pada 18 Nov 2017  ·  22Komentar  ·  Sumber: AutoFixture/AutoFixture

Saat ini pengujian kami mengikuti gaya Uji Empat Fase yang canggung untuk menggambarkan badan uji. Saya tidak suka itu sama sekali, karena sepertinya beberapa hal jadul yang tidak cocok dengan xUnit. Kekhawatiran saya:

  • Fase // Teardown selalu kosong dalam pengujian xUnit karena ia membuat sut per pengujian, tanpa perlu restore .
  • // Fixture setup , // Exercise System dan // Verify Outcome terlihat terlalu bertele-tele, sementara // arrange , // act dan // assert lebih singkat. Jika Anda tidak membuat tes dari template, akan lebih mudah untuk menulis kata-kata tersebut (selalu sulit untuk menulis exercise tanpa salah ketik ).

Oleh karena itu, @moodmosaic jika Anda tidak memiliki keberatan yang kuat (saya harap Anda tidak keberatan), saya ingin mengalihkan kami ke tes 3 fase dan menggunakannya semua tes kami. Itu akan memungkinkan saya untuk merasakan kepuasan selama pembuatan tes, daripada rasa sakit

enhancement good first issue

Komentar yang paling membantu

Biasanya saya menggunakan // Act & Assert karena terlihat lebih ringkas dan keren Kecuali @moodmosaic memiliki masalah, saya lebih suka mengikuti gaya itu

Semua 22 komentar

Pergi untuk itu. Tapi saya lebih suka memiliki huruf kapital pertama, yaitu

// Arrange
// Act
// Assert

dari pada

// arrange
// act
// assert

Apakah Anda memiliki alasan kuat untuk memilih kasus kedua?

Tidak, huruf besar tidak masalah bagi saya - cukup kita menggunakan AAA :blush:

Anda juga dapat memisahkan setiap fase dengan baris kosong, yang merupakan format yang saya gunakan saat ini. Kemudian, pembaca tes dapat menganggapnya Given/When/then , atau Arrange/Act/Assert , atau bahkan (yang empat fase ada di sini) .

Anda dapat membaca lebih lanjut tentang ini di bagian "Tes sederhana dengan lebih dari tiga baris kode" di sini .

Saya sangat tidak menyukai penggunaan baris kosong alih-alih komentar di OSS dan tidak setuju dengan ide Marks itu. Lihat komentar saya di sini .

Komentar di atas setiap fase pengujian, pada dasarnya, adalah komentar . Dan dalam kasus khusus ini, mereka meminta maaf , karena mereka menjelaskan bagaimanaalih -


Sekarang, kembali ke AutoFixture, karena semua tes dihiasi dengan komentar, dan karena fase pembongkaran perlengkapan hampir selalu kosong, kita dapat melanjutkan dan mengubahnya menjadi AAA .

Dan dalam kasus khusus ini, mereka meminta maaf

Yah, saya juga sering mengacu pada aturan ini, namun dalam kasus khusus ini saya lebih memilih untuk tetap "meminta maaf" Mereka membuat struktur tes lebih jelas dan ketat. Secara pribadi saya merasa lebih mudah untuk membaca tes "berlabel", tapi mungkin itu hanya masalah kebiasaan

tapi mungkin itu hanya masalah kebiasaan

Ini; dan mungkin juga soal siapa yang sebenarnya menulis tes.

Halo, saya ingin menangani ini. Saya penggemar berat Autofixture dan menggunakannya dalam pekerjaan saya sepanjang waktu dan itu akan menjadi cara yang baik untuk membalas.
Jadi pada dasarnya kalian ingin mengubah yang berikut di semua file pengujian:
// Fixture setup ke // Arrange
// Exercise System ke // Act
// Verify Outcome ke // Assert
dan akhirnya // Teardown tidak menghasilkan apa-apa.

Ya, tetapi perlu diingat bahwa melakukan 'cari dan ganti' mungkin tidak berhasil karena beberapa fase digabungkan bersama dalam beberapa pengujian. Artinya, Anda mungkin menemukan sistem Latihan & memverifikasi hasil dan serupa, IIRC.

@moodmosaic Saya mengerti, saya berencana untuk melakukan file demi file bukan 'temukan dan ganti' penuh tetapi saya mungkin masih menggunakannya dalam kasus yang lebih jelas/sederhana.

Terima kasih,
Eisa

@moodmosaic seharga // Exercise system and verify outcome harus diganti dengan
// Act and Assert
Atau kalian memikirkan sesuatu yang berbeda?

Biasanya saya menggunakan // Act & Assert karena terlihat lebih ringkas dan keren Kecuali @moodmosaic memiliki masalah, saya lebih suka mengikuti gaya itu

Either way tidak apa-apa :neckbeard:

Jadi saya mencoba untuk memulai ini dan setelah saya memuat All.sln di VS 2017 dua proyek F#
( AutoFoq, AutoFoqUnitTest ) gagal dibuka. Saya memiliki pengalaman nol dengan F # sehingga bantuan apa pun akan dihargai
screenshot_121417_042805_pm

@micheleissa Pastikan Anda menggunakan versi terbaru VS (15.5.1 atau lebih baru), jika tidak, proyek tidak akan terbuka (MS menerapkan perubahan pada F# SDK mereka). Pastikan juga untuk menjalankan git clean -fdx . berada di root dengan VS tertutup. Itu untuk membersihkan file-file sementara jika Anda memeriksa proyek sebelumnya.

Kedua langkah itu akan membantu. Beri tahu saya jika mereka tidak melakukannya

screenshot_121517_111531_am
@zvirja Saya telah

Sudahkah Anda mencoba bagian kedua?

  • Tutup VS
  • Lihat master
  • Pergi ke root dan jalankan git clean -fdx .
  • Buka VS lagi?

Tampaknya Anda hanya memiliki sisa dari SDK sebelumnya.

Pastikan juga bahwa perkakas F# diinstal pada mesin Anda:
image

Ya, saya lupa yang kedua maaf :)
Saya akan mencobanya sekarang

@zvirja yang berhasil, Terima kasih banyak telah membantu!

Satu pertanyaan lagi, bagaimana cara mengaitkan cabang yang saya kerjakan di repo bercabang saya ke tiket ini?

Hebat itu berhasil! 👍

bagaimana cara mengaitkan cabang yang sedang saya kerjakan di repo bercabang saya ke tiket ini?

Saya sarankan untuk melihat artikel ini, alur kerja dijelaskan dengan baik di sana: https://github.com/sevntu-checkstyle/sevntu.checkstyle/wiki/Development-workflow-with-Git :-Fork,-Branching,- Komit,-dan-Tarik-Permintaan

Pada dasarnya, Anda tidak perlu mengaitkan cabang dengan masalah ini. Sebaliknya, Anda membuat Permintaan Tarik dan cukup menyebutkan masalah ini di isi (misalnya lihat yang ini ).

OK mengerti. Terima kasih! Saya akan membuat pull request saat saya sedang mengerjakan masalah ini sehingga kalian dapat memantau kemajuan dan memberikan umpan balik sesuai dengan apa yang disebutkan dalam pedoman kontribusi.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat

Masalah terkait

JoshKeegan picture JoshKeegan  ·  6Komentar

tiesmaster picture tiesmaster  ·  7Komentar

josh-degraw picture josh-degraw  ·  4Komentar

Eldar1205 picture Eldar1205  ·  5Komentar

DeafLight picture DeafLight  ·  5Komentar