๐ 3๋จ๊ณ - ํ์๊ฐ์ (์ ํจ์ฑ ๊ฒ์ฌ)#72
Conversation
malibinYun
left a comment
There was a problem hiding this comment.
3๋จ๊ณ ๋ฏธ์
๊ณ ์ ๋ง์ผ์
จ์ด์!
๋น ๋ฅธ ๋ฏธ์
์งํ์ ์ํด ๋จธ์งํ๊ฒ ์ต๋๋ค ใ
ใ
ํผ๋๋ฐฑ์ ๋ค์ ๋ฏธ์
์ ๋ฐ์ํด์ฃผ์ธ์!
| SignUpTextField( | ||
| label = stringResource(R.string.signup_user_name), | ||
| onTextChanged = setUserName, | ||
| text = userName, | ||
| inputValidation = userName.isValid<Username>(), | ||
| ) |
There was a problem hiding this comment.
์ ๋ ฅ์ฐฝ ์ปดํฌ๋ํธ๋ฅผ ํ๋ ์ ๋ง๋ค์ด๋์์ผ๋, ์ด ์ปดํฌ๋ํธ๋ฅผ ํ์ฉํด์ ๊ฐ ์ ๋ ฅ(์ด๋ฉ์ผ, ๋น๋ฐ๋ฒํธ ๋ฑ)์ ๋ง๋ ์ปดํฌ๋ํธ๋ฅผ ๊ฐ๊ฐ ๋ง๋ค์ด๋ณด๋ ๊ฑด ์ด๋จ๊น์?
| @Composable | ||
| private fun SignUpButton() { |
There was a problem hiding this comment.
๊ฐ ์ปดํฌ๋ํธ๋ค์ Preview์ ํจ๊ป ํ์ผ ๋ถ๋ฆฌํด๋ณด๋ ๊ฑด ์ด๋จ๊น์?
| colors = TextFieldDefaults.colors( | ||
| focusedTextColor = Color.Black, | ||
| unfocusedTextColor = Color.Black, | ||
| focusedLabelColor = Blue50, | ||
| unfocusedLabelColor = Gray, | ||
| unfocusedContainerColor = BlueGray20, | ||
| focusedContainerColor = BlueGray20, | ||
| focusedIndicatorColor = Blue50, | ||
| ), |
There was a problem hiding this comment.
color scheme์ ์ ์ํด์ฃผ์ จ๋ค์ ๐
| @Before | ||
| fun setup() { | ||
| composeTestRule.apply { | ||
| setContent { SignUpScreen() } |
There was a problem hiding this comment.
Screen์ ํต์งธ๋ก ํ
์คํธํด๋ณผ ์๋ ์๊ฒ ์ง๋ง,
๊ฐ ์
๋ ฅ ํ์
๋ณ ์
๋ ฅ๊ธฐ ์ปดํฌ๋ํธ๋ฅผ ๋ง๋ค์ด๋ณธ ๋ค์, ๊ฐ๊ฐ์ ์ปดํฌ๋ํธ์ ๋ํด ํ
์คํธ์ฝ๋๋ฅผ ์์ฑํด๋ณด๋ ๊ฑด ์ด๋จ๊น์?
๊ฐ ์ปดํฌ๋ํธ๋ค์ด ์๋ก์ ๊ฐ์ญ ์์ด ํ
์คํธ๋ฅผ ๋ง๋ค์ด๋ณผ ์๋ ์๊ฒ ์ด์ :)
| // then: | ||
| composeTestRule.onNodeWithText(USERNAME_LENGTH_INVALIDATION.message).assertExists() | ||
| } |
There was a problem hiding this comment.
ํ
์คํธ ์ฝ๋์ ๊ฒ์ฆ๋ถ์๋ ์์๋ฅผ ํ์ฉํ๊ธฐ ๋ณด๋ค, ๋ฌธ์์ด์ ์ง์ ํ๋์ฝ๋ฉํ๋ ๊ฑด ์ด๋จ๊น์?
์ข์ ๊ธ์ ๊ณต์ ๋๋ ค์ :)
|
|
||
| sealed interface SignupValidator { |
There was a problem hiding this comment.
4๋จ๊ณ ๋ฏธ์
์ธ ๋ทฐ, ๋๋ฉ์ธ ๋ก์ง ๋ถ๋ฆฌ๋ ๊ฐ์ด ํด์ฃผ์
จ๋ค์!
์ด๋ถ๋ถ์ ๋ค์ ๋จ๊ณ์์ ๋ ์์ธํ๊ฒ ๋ค์ฌ๋ค๋ณผ๊ฒ์ :)
| // given: | ||
| val password: String = "123456789" + "12345678" |
There was a problem hiding this comment.
์ฒ์๋ถํฐ 17์ ๋ฌธ์์ด์ ์ฌ์ฉํ์ง ์๊ณ 9์๋ฆฌ ๋ฌธ์์ด์ ๋ํด์ ์ฐ๋ ํฐ ์ด์ ๊ฐ ์์๋์ ?_?
์ด๋ค ์๋์ธ์ง ๊ถ๊ธํด์.
| @Test | ||
| fun `8~16๊ธ์ ์ ๋ฒ์ ๋ด์ ๋น๋ฐ๋ฒํธ๋ง ์ฌ์ฉ ๊ฐ๋ฅํ๋ค`() { | ||
| // given: | ||
| val passwords: List<String> = List<String>(9) { "pass0123" + "12345678".take(it) } |
There was a problem hiding this comment.
ํ
์คํธ์ ์ค์ ๋ก ์ด๋ค ๊ฐ๋ค์ด ๋น๊ต๊ฐ์ผ๋ก ์ฐ์๋์ง ์ฝ๋๋ง ๋ณด๊ณ ์๊ธฐ์๋ ์ฝ๊ฒ ์ ์ ์๋ค ์๊ฐํด์.
8~16์์ ๋ชจ๋ ํ
์คํธ๋ฅผ ๋ค ๊ฒ์ฆํ๊ณ ์ถ๋ค๋ฉด, Parameterized Test ๋ฑ์ ํ์ฉํ๊ณ , ๋น๊ต ๊ฐ์ ์ค์ 8~16์ ๋ฌธ์์ด์ ํ๋์ฝ๋ฉํด์ ์ค๋นํด๋ณด๋ ๊ฑด ์ด๋จ๊น์?
๋ฌผ๋ก Junit4์ Paramterized Test๊ฐ ๋งค์ฐ ๊ท์ฐฎ์ ๊ฑด ๋ค์ด์์ ๐
|
์ฌํ ์ด๋๋ค๋
์ค์
จ๋์.. ์ ๋ ์ฌํ ๋ณด๋ด์ฃผ์ธ์
๋ง์ด๋ง์ด ๊ณ ๋ฏผํด๋ณด์ธ์! |
ํ์ฌ ๋ฆฌ๋ทฐ์ ๋ฐฉํฅ๋ค์ ๊ณต์ฉ ์ปดํฌ๋ํธ๋ฅผ ์ถ์ถํ๋ ๊ณผ์ ์ผ๊น์?
privateํ ํจ์๋ฅผ ํ
์คํธํ๋ ๋ฐฉ๋ฒ์ผ๋ก ํด๋น ํจ์๋ฅผ ์ฌ์ฉํ๋ Public ํ
์คํธ๋ฅผ ํ
์คํธํจ์ผ๋ก์จ ๊ฐ์ ์ ์ผ๋ก ํ
์คํธ ํ ์ ์์์ต๋๋ค.
์ข์ ๊ธ ๊ฐ์ฌํฉ๋๋ค! ๊ธ์ ์ ๋
ํด๋ณด์์ ๋ 1, 2๋ฒ์ ๋ํ ๋ด์ฉ์ ๊ณต๊ฐํ์ต๋๋ค!
17์๋ฅผ ์ฝ๊ฒ ์นด์ดํธํ๋ ค๊ณ ๊ทธ๋ฌ๋ ๊ฒ ๊ฐ์ต๋๋ค ใ ใ ; ์์ ํ์ต๋๋ค! |
๊ณต์ฉ ์ปดํฌ๋ํธ๋ผ.. ๋ค๋ฅธ ํ๋ฉด์์ ์ด๋ฉ์ผ ์
๋ ฅ์ฐฝ์ด๋ ๋น๋ฐ๋ฒํธ ์
๋ ฅ์ฐฝ์ด ํ์ํด์ง๋ ๊ฒฝ์ฐ, ๊ทธ๋ ๋์ด์ ์ปดํฌ๋ํธ ๋ถ๋ฆฌ๋ฅผ ํด๋ณผ ์๋ ์๊ฒ ์ง์! ๋ง์ด ์ข ๊ธธ์๋๋ฐ,
์ด ๋ฆฌ๋ทฐ๋ ์ปดํฌ๋ํธ ๋ถ๋ฆฌ์ ์ฐ๊ฒฐ๋์ด์.
์ ๋ต์ด ์๋ ๋ถ๋ถ์ด์ด์, ์ ํ์ ๋งก๊ธธ๊ฒ์. '์ ํ๊ธฐ'ํด์ผํ๋ค๋ ์๋ฏธ๋, ์ ํํ ๋จ์ด๊ฐ ๋ค์ด๊ฐ์ผํ๋ค๋ ๊ฒ๊ณผ ๋ค๋ฅด์ง ์๋ค ์๊ฐํด์. |
๐๐๐ฐ๐ณ๐ฌ ๐๐ฆ๐ด๐ค๐ณ๐ช๐ฑ๐ต๐ช๐ฐ๐ฏ
๐ฌ๐๐ฐ ๐๐ฆ๐ท๐ช๐ฆ๐ธ๐ฆ๐ณ๐ด
์๋ ํ์ธ์ ๋ง๋ฆฌ๋น! ์ค๋ ๊ธฐ๋ค๋ฆฌ์ จ์ฃ !!
์ ๊ฐ ์ฃผ๋ง๋์ ์ฌํ + ์์ทจ๋ฐฉ ์ด์ฌ๊ฐ ๊ฒน์ณ์ ๋ฆ์์ต๋๋ค ์ฃ์กํฉ๋๋ค :(
Compose๋ณด๋จ ์ค๋๋ง์ ๊ฐ์ฒด ์งํฅ์ ๋ชฐ๋ํ๋๋ผ ์ด์ง?์ฌ๋ฐ์์ต๋๋ค.
์๋ฌด๋๋ ํ ์คํธ๋ถ๋ถ์ด ๊ฐ์ฅ ๋ฏธ์ํฉ๋๋ค ....ใ ใ
UI ํ ์คํธ๋ UI์ ๋ํ ๊ด์ฌ์ฌ๋ง ํ ์คํธํ๋ ๊ฒ์ด ๋ง๋ ๊ฒ ๊ฐ์์, ์๋ฌ ๋ฌธ๊ตฌ๊ฐ ๋์ด์ง๋ ๊ฒฝ์ฐ์ ์๋ง ํ ์คํธํ์ต๋๋ค(๊ทธ๊ฒ๊ทธ๊ฑด๊ฐ์..?)
๋ ์์ธํ..? ์ฌ๋ฌ ๊ฒฝ์ฐ์ ์์ ๋ํ ํ ์คํธ๋ ์ ๋ํ ์คํธ๋ก ์์ฑํ์ต๋๋ค.
๋ฆฌ๋ทฐํ๋๋ผ ์๊ฐ๋ด์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค!