Detailed Notes
Welcome to another edition of Developreneur. Today we are going to be talking about AssertJ packages. AssertJ is a fluent assertion library in Java for unit testing. Therefore, instead of using the traditional JUnit Assert class, we will discuss this new library, AssertJ. Today we'll be looking at unit testing with Assert J. We'll briefly talk about the differences between assertions and why they're essential within unit testing. And then, we're going to go into a full HandsOn presentation using assert j methods and chaining within our unit testing.
What is Unit Testing?
Let's begin by talking about unit testing. Unit testing is software testing, where we test the individual units of our source code. Here we focus on testing particular methods or units of work, not the general application. We're not doing regression or integration testing on the different integration points or other applications. We want to focus on a specific unit of work, potentially a method in our code.
Why is unit testing necessary?
First, it helps us to identify problems early in the development cycle. Then it lets us quickly catch bugs or issues with our code changes at development time. So as we're writing the code, we can test the code and say, oops, our change broke something, or everything passed, and we can then move on. Finding and fixing bugs at this level is very cost-effective because we can fix them now. Whereas if we waited till we did regression testing or manual testing of the application once it's been packaged and shipped. It will be harder for us to identify what that bug is or where that problem came from in the code.
Finding and fixing bugs at this level is very cost-effective because we can fix them now.
The importance of Unit testing
With Unit testing, we can quickly catch most of the functionality bugs within our application during development. It also makes debugging the process easier because if we see the bug in our unit test, we know specifically in our code where it broke. We know where to fix the problem. Again, if we wait till the end when we're trying to package and ship the product, we don't necessarily know where the bug exists. So it will take more time and effort to go back in and dig into the code and find the problem. The other nice thing about unit testing is we can reuse our code to migrate our specific test from one application to another. So if we have similar code in one application, we could copy that unit test, put it into the other code base, make a couple of tweaks, and be done.
Why is unit testing so effective?
Unit testing is the first line of testing that developers can do while writing their source code. Now, this leads to assertions. So what are assertions? The Oxford Dictionary defines assertion as a confident and forceful statement of fact or belief. Which translates into what we're looking at when we talk about testing. Junit or unit testing defines an assertion as a collection of utility methods that support asserting test conditions. It is easy to take a test scenario or some test data and test something. We want to make sure that things work.
An assertion is a confident and forceful statement of fact or belief.
So what is AssertJ?
AssertJ is a library or a third-party library that you can include in your project that is rich and easy to use. It is extensible and open source so that you can extend the libraries. It is also community-driven, so there are no licenses or costs to using this library. AssertJ provides a rich set of assert classes and methods that provide excellent error messages. It improves test code readability and is easy to use within your favorite IDE.
Why should I use AssertJ instead of plain Assert classes?
The whole reason I'm even talking about AssertJ today is that once I found and started using this, it made writing those unit tests, asserts, and use cases easier to read and follow. Instead of having to create a whole bunch of independent asserts with the traditional assert libraries that come with Junit or some of the other unit libraries. It made a difference in the way I write Unit tests.
Hands on with AssertJ
In the video, we also provide a hands-on demo of the different APIs between JUnit and AssertJ. Including a sample unit test highlighting some of the functionalities that come with AssertJ.
Finally, this series comes from our mentoring/mastermind classes. These classes are virtual meetings that focus on how to improve our technical skills and build our businesses.  After all, the goals of each member vary.  However, this diversity makes for great discussions and a ton of educational value every time we meet.  We hope you enjoy viewing this series as much as we enjoy creating it. As always, this may not be all new to you, but we hope it helps you be a better developer.
Transcript Text
thank you [Music] hello this is Rob with developmentor also known as building better developers wanted to announce that we have school.developmentor.com feel free to check it out if you like any of this information any of the content that we've sent and you would like to see more you can come out you can enroll for free we have free courses we've got places for you to get better at just learning a technology or how to's you can work on your business skills we can help you with becoming a better developer as encoding and things like that a lot of the stuff you've seen on YouTube we also have out at school.developmentor we just have it in a little more of a educational format and a way for you to track your progress as you move forward becoming a better developer okay next we have collections so now not only can we look at strings look at objects we can actually take collections so I've created a list of person uh test people and I'm going to add John Smith and Jane Doe to this collection now with in this collection we can now check to see so as you can see I copied the uh example from there from the assert.j page so in their example they have all these uh methods and classes that you have to kind of include to see what's going on it makes it hard to read but here I just went with the simple approach so we'll get rid of that line so collection is specific assertions and there are a lot more so we can assert on a collection not just a string but on a collection we can check things like its size we can check to see if it contains the objects that we want we can also check to see if it doesn't contain the objects that we want so this is again pretty slick pretty useful and very readable we can assert that our test people our collection is two it contains John Smith and Jane Doe and it does not contain random people so if I run this will pass however if I switch this up and I put random person here okay so to take Jane Doe take random person now if I run this this should fail because test people does not contain random person but it does contain Jane Doe but let's look at the nice error message that we get to basically tell us what we did wrong so if we come over here so Java assert error expecting person with John Smith and Jane Doe to contain uh John Smith and random person how and um so we failed at the second criteria because it could not find random person random person was not in our collection which makes it very easy to look at this and say ah okay so we asserted to test people as to pass but we failed on this line we failed because John Smith uh was there but random person was not now what if I add random or change L back now we should fail on this line so if we run this again read our error so again we're expecting it writes out the whole collection for us this is so slick very helpful so we're basically saying okay we've made it past the count we made it past the expecting so we're expecting uh John Smith we're expecting Jane Doe but we're expecting not to contain Jane Doe however it did fine Jane Doe so when we go back and look at our go back and look at our test we know that we failed on this line so if I put uh revert that back now say we want to check on this one so it has size very easy to read expecting size zero but was two and it tells you what was in the collection so again pretty straightforward fairly easy to understand and the nice thing is it's so readable it's so easy to follow whereas if you just use standard assertions again you're going to have to create multiple lines of assertions do multiple lines of checks and it's going to get bloated and very ugly and very unreadable very quickly right so that's a very simple example of using collections let's move down to the as method so as is used to describe the test and will be shown before the error message so this is neat because now we can even override at test time what it is that we're doing with our test so we can actually name uh or describe what our test is doing within the test again keeping it with that very readable flow that assert J gives us with the fluid so we have assert that johnsmith.getage dot s so we're going all right so we're asserting that John Smith's age as we're going to check the age of John Smith is equal to 65. now so we're going to check percent s so we're using the string placeholder or strings and then we're going to replace that with the actual name from our objects we're going to check John Smith's age is equal to 65. so now just by reading this it's very easy to read so we're going to assert that John Smith's age as checking John Smith's age is equal to 65. now this may seem a little redundant here but when we run this we're going to see that on our report it's very easy to read if it fail so right now it passed so we're not going to actually see anything but if our age was wrong and I ran this now we fail so now our comparison failure check John Smith's age expected 64 but was 65. and what's really cool is it actually tells you or identifies what character was different so not only does it tell me that 64 is not 65 but it actually points out that it's the second the first number I'm sorry the single unit number that was different again making this very easy to debug and very easy to follow all right so we'll put that back so that is the as so that again is to describe the test that you're doing right so next say we want to test some assertions this one is straight from their example I thought it was pretty clean very easy to follow so I didn't want to go too far off the rails so there's two ways we could do this so we can assert that uh we can assert that we're going to get an exception so we're going to assert that a throne by so instead asserting that some check some pass is going to work we're going to assert a throne we're going to assert a uh an exception is going to happen then we're going to use Lambda and we're going to essentially throw the assertion and the message that we want now this is just a straight example we're forcing the assertion we could call John Smith's age or we could call our calculator and we could trigger whatever the action is that creates the exception and then we can verify that the message was thrown by using has message so to read this it is assert that thrown by will happen when some execution occurs and then we want to make sure that we receive the message from the exception now if we wanted to use a little bit more Behavior driven uh testing style we can do it this way we can do throwable Throne equals catch throwable again Lambda again using the throne new exception and then we can assert that Throne so we can assert that the exception has message containing boom so you could do either I actually like this a little bit more but it does require you to actually do the uh or separate the layer between the exception and the assert that so you could do it this way which is everything's wrapped together which is very clean or you can do it this way where you actually break the logic that creates the exception and then you test the exception both ways work uh in both ways uh generate the same message so if I wanted to run this again this will pass and if we want to break it and run and expand this so we see that the expected message was supposed to be Boom at but we received boom exclamation point again exception assertion test arraylist exception and assertion error now if I put this one back now it should fail on the second one and as you see it is the exact same message so again either approach Works uh you get the same result next let's look at extracting assertions so here is another useful way we can use Collections and assertions so here I'm again going to create a collection of persons I'm going to go ahead and add all three people random John Smith and Jane Doe what's cool about this is using the assert that method again we can pass in a collection now not just an object and then we can use this extracting method to actually extract an individual class from within our collection so I can take person get name and I'm not even just checking the class I can actually check all the objects in this collection based on their um get name so I can base it on their on a method so person get name then I can use other comparative methods like contains does not contain string equal and I can pass in a list of values to check so I can say it does not contain random does not contain person another way of doing this we can actually extract so this is for checking a single value with multiple checks on uh get name but we could also check multiple so I could actually extract again but this time not only am I extracting get name but I can actually get name page and State so I don't even have to just use get name I can actually use the variables and then I can check to see if it contains and this is cool where I can use the Tuple method which allows it's a utility method to build a tuple basically you can kind of chain out what it is that your the values to match what it is you're extracting so I can essentially create a mock object with random person for name page and State all right so let me save this run this and this will pass all right so let's take the first part here so random person so we're going to assert that to uh the first one here extracting person does not contain random or person so this time I'm actually going to look for the whole name random person so if I run this this should fail because random person is in the list and it does it fails expecting random person John's uh so it's expecting so the collection I'm passing in is random person John Smith Jane Doe not to contain random person however it failed because random person was in the list again I am not writing any of these uh uh I'm not writing any of these test cases I'm not running any of this logic this is all built into a search day foreign person and say we want to test the second part here and let's have Jane Doe fail we'll set her age to be a hundred run that again we failed so we were expecting a collection uh random person age state uh John Smith Gage State Jane Doe H state to contain random person 12. okay that one looks good John Smith 65 Florida that looks good and whoops uh we're looking for Jane Doe 100 that's not there and it couldn't find them so again very easy to follow very easy failures okay and the last one we're going to look at today is filtering a collection so not only can you pull out values within the collection you can actually filter on the collection so here and spaces all right so now we're going to take that same collection that we used previously but we're going to filter on the collection so we're going to assert that our collection test people we are going to filter on a character in the name so a really character in this case is person so we want person so I'll change that to person I like being descriptive so we have our person object person so filter on person dot get name dot contains J so we're going to look for all names so it's going to return me all the names or all the objects in the collection that contain the name with the letter j capital j so this is going to return us should return us just John Smith and Jane Doe which we then can do that contains only John Smith and Jane Doe and this should pass so if I run this we pass however if I look for a random person random person does not have J in the name and this guy should fit and it does so we're expecting person John Smith Jane Doe to contain only person John Smith Jane Doe random person but could not find the following elements person random person so we're looking for that J all right so we go back and again so it contains only and then we can do contains we can do all we can do exactly we can say null and we can even check sequence so there's a lot of different things we can do with this which is really cool right so here again we're doing person name dot contains J contains only John Smith all right and the last one we're going to look at is combining filtering and extracting so now we can actually it just shows you that you can do more you can do it pretty much anything once you start this the stream once you start the fluent path of assert that so here we're going to start that test people we're going to filter like we did up here again on person and we're going to do person.name contains capital j okay filter containing only again John Smith Jane Doe does not matter on the order so up to this point we are doing exactly what we just did in the first part so we're going to assert that the test people with capital J in the name should contain Jane Doe and John Smith however we can go further we can then once we get these two objects we can extract person then we can extract their age and then we can double check to make sure that the age contains 65 and 99. so here we get person we extract the age and then we check to make sure that that contains 65 and 99 so we can check for the object and then we can actually check for the values so if we save this that should pass let's say our age was 100 which is wrong we should fail so we're expecting 65 and 99 to contain oops we had 65 and 100 but we could not find 100. and that is pretty much a cert J in a nutshell so any questions or comments yeah actually I did have a question become uh the ass um operation I know that I've seen that used but um I myself haven't used it I've always thought of a use case for it though uh with reporting um maybe not at the unit test level but possibly even at the integration or load testing whatever uh what are the higher levels of testing um using that as operation to couple into good job one couple into like x-ray and you know then you're you know reporting that stuff out uh in a specific format um because you've got the as operation have you seen anything like that it's probably uh guilty yes so um okay it's if you go back to some of my test mg presentations um granted those I was not using um assert J but it's the same practice uh what you could do is as you create your unit tests or you create your individual assertions like in this case here with the search J you can inject the description that you want to go with that specific test uh with the search J at the actual assertion level which is awesome because it goes with that fluent that flow that chaining method where it's easy to read left to right what's going on when you generate the report it's going to appear on your report in that nice clean concise way Tess and G allows you to essentially override that you can do it both at the unit test or you could actually do it at the test Suite in in the XML which is kind of why I like testing g a little more than uh day unit plus the fact that you can actually do a lot more with uh testing G as far as like system level testing integration testing and things like that whereas um like I think you've seen with integration testing we have to do we have to kind of budget a little bit to make it work within uh the unit test environment very nice good stuff thank you any other questions man how big is this thing is I oh anytime I'm thinking like Java is up I feel like it's pretty much done I'm thinking is this a new a new thing in Java no this is a library so think of this like a plug-in like test NG it is a library you can add to your project to enhance your unit testing okay good questions I'd like to thank you for your time you know we spend a lot of time talking about different topics at developer we cover different things like testing best practices you know how to be a better developer so if you have any ideas or any topics that you would like us to discuss or talk through you can reach us at any of these locations you can email us at info developmenter.com you can find us uh reach us through our contact us page on our main page developer.com contact us we're also on YouTube you can find the YouTube link on the main page of our website I'm it's a very funky URL so I'm not going to read that out uh we're also on vimeo.com developmenter we're still on Facebook at facebook.com developer and we're on Twitter at twitter.com developreneur our goal is making every developer better have a great day [Music] foreign [Music]
Transcript Segments
thank you
[Music]
hello this is Rob with developmentor
also known as building better developers
wanted to announce that we have
school.developmentor.com feel free to
check it out if you like any of this
information any of the content that
we've sent and you would like to see
more you can come out you can enroll for
free we have free courses we've got
places for you to get better at just
learning a technology or how to's you
can work on your business skills we can
help you with becoming a better
developer as encoding and things like
that a lot of the stuff you've seen on
YouTube we also have out at
school.developmentor we just have it in
a little more of a educational format
and a way for you to track your progress
as you move forward becoming a better
developer
okay next we have collections so now not
only can we look at strings look at
objects we can actually take collections
so I've created a list of person
uh test people and I'm going to add John
Smith and Jane Doe to this collection
now with in this collection we can now
check to see so as you can see I copied
the uh
example from there from the assert.j
page so in their example they have all
these uh methods and classes that you
have to kind of include to see what's
going on it makes it hard to read
but here I just went with the simple
approach so we'll get rid of that line
so collection
is specific assertions and there are a
lot more so we can assert on a
collection not just a string but on a
collection we can check things like its
size we can check to see if it contains
the objects that we want we can also
check to see if it doesn't contain the
objects that we want so this is again
pretty slick pretty useful and very
readable we can assert that our test
people
our collection is two it contains John
Smith and Jane Doe and it does not
contain random people so if I run this
will pass
however if I switch this up and I put
random person here
okay so to take Jane Doe
take random person
now if I run this this should fail
because test people does not contain
random person but it does contain Jane
Doe but let's look at the nice error
message that we get to basically tell us
what we did wrong
so if we come over here
so Java assert error expecting person
with John Smith and Jane Doe to contain
uh John Smith and random person how and
um
so we failed at the second criteria
because it could not find random person
random person was not in our collection
which makes it very easy to look at this
and say ah okay so we asserted to test
people as to pass but we failed on this
line we failed because John Smith uh was
there but random person was not now what
if I
add random or change L back
now we should fail on this line
so if we run this again
read our error so again we're expecting
it writes out the whole collection for
us this is so slick very helpful so
we're basically saying okay we've made
it past the count we made it past the
expecting so we're expecting uh John
Smith
we're expecting Jane Doe but we're
expecting not to contain Jane Doe
however it did fine Jane Doe so when we
go back and look at our go back and look
at our test we know that we failed on
this line
so if I put uh
revert that back
now say we
want to check on this one so it has size
very easy to read expecting size zero
but was two and it tells you what was in
the collection
so again pretty straightforward fairly
easy to understand and the nice thing is
it's so readable it's so easy to follow
whereas if you just use standard
assertions again you're going to have to
create multiple lines of assertions do
multiple lines of checks and it's going
to get bloated and very ugly and very
unreadable very quickly
right so that's a very simple example of
using collections
let's move down to the as
method so as is used to describe the
test and will be shown before the error
message
so this is neat because now we can even
override
at test time what it is that we're doing
with our test so we can actually name uh
or describe what our test is doing
within the test again keeping it with
that very readable flow that assert J
gives us with the fluid so we have
assert that johnsmith.getage
dot s so we're going all right so we're
asserting that John Smith's age as we're
going to check the age
of John Smith
is equal to 65. now so we're going to
check percent s so we're using the
string
placeholder or strings and then we're
going to replace that with the actual
name from our objects we're going to
check John Smith's age is equal to 65.
so now just by reading this it's very
easy to read so we're going to assert
that John Smith's age as checking John
Smith's age is equal to 65.
now this may seem a little redundant
here but when we run this
we're going to see that on our report
it's very easy to read if it fail so
right now it passed so we're not going
to actually see anything but if our age
was wrong and I ran this
now we fail
so now
our comparison failure check John
Smith's age expected 64 but was 65. and
what's really cool is it actually tells
you or identifies what character was
different
so not only does it tell me that 64 is
not 65 but it actually points out that
it's the second the first number I'm
sorry the single unit number that was
different
again making this very easy to debug and
very easy to follow
all right so we'll put that back
so that is the as so that again is to
describe the test that you're doing
right so next say we want to test some
assertions
this one is straight from their example
I thought it was pretty clean very easy
to follow so I didn't want to go too far
off the rails so there's two ways we
could do this
so we can assert that
uh we can assert that we're going to get
an exception so we're going to assert
that a throne by so instead asserting
that
some check some pass is going to work
we're going to assert a throne we're
going to assert a uh an exception is
going to happen
then we're going to use Lambda and we're
going to essentially throw the assertion
and the message that we want
now
this is just a straight example we're
forcing the assertion we could
call John Smith's age or we could call
our calculator and we could trigger
whatever the action is that creates the
exception and then we can verify that
the message was thrown by using has
message
so to read this it is assert that thrown
by will happen when some execution
occurs and then we want to make sure
that we receive the message from the
exception
now if we wanted to use a little bit
more Behavior driven uh
testing style we can do it this way we
can do throwable Throne equals catch
throwable
again Lambda again using the throne new
exception and then we can assert that
Throne so we can assert that the
exception has message containing boom
so you could do either I actually like
this a little bit more but it does
require you to actually do the uh or
separate the layer between the exception
and the assert that so you could do it
this way which is everything's wrapped
together which is very clean or you can
do it this way where you actually
break the logic that creates the
exception and then you test the
exception
both ways work uh in both ways uh
generate the same message
so if I wanted to run this again this
will pass
and if we want to break it
and run
and expand this
so we see that the expected message was
supposed to be Boom at but we received
boom exclamation point
again exception assertion test arraylist
exception and assertion error now if I
put this one back
now it should fail on the second one
and as you see it is the exact same
message so again either approach Works
uh you get the same result
next let's look at extracting assertions
so here is another useful way we can use
Collections and assertions
so here I'm again going to create a
collection of persons I'm going to go
ahead and add all three people random
John Smith and Jane Doe
what's cool about this is using the
assert that method again we can pass in
a collection now not just an object and
then we can use this extracting method
to actually extract an individual class
from within our collection so I can take
person get name
and I'm not even just checking the class
I can actually check all the objects in
this collection based on their
um get name so I can base it on their on
a method so person get name
then I can use other comparative methods
like contains does not contain string
equal
and I can pass in a list of values to
check so I can say it does not contain
random does not contain person
another way of doing this we can
actually extract so this is for checking
a single value
with multiple checks on
uh get name
but we could also check multiple
so I could actually extract again
but this time not only am I extracting
get name but I can actually get name
page and State
so I don't even have to just use get
name I can actually use the variables
and then I can check to see if it
contains and this is cool where I can
use the Tuple method
which allows it's a utility method to
build a tuple basically you can
kind of chain out what it is that your
the values to match what it is you're
extracting so I can essentially create a
mock object with random person for name
page and State
all right so let me save this
run this
and this will pass
all right so let's take the first part
here
so random person so we're going to
assert that to uh the first one here
extracting person does not contain
random or person
so this time I'm actually going to look
for the whole name random person
so if I run this this should fail
because random person is in the list and
it does
it fails expecting random person John's
uh so it's expecting so the collection
I'm passing in is random person John
Smith Jane Doe not to contain random
person however it failed because random
person was in the list
again I am not writing any of these uh
uh I'm not writing any of these test
cases I'm not running any of this logic
this is all built into a search day
foreign
person and say we want to test the
second part here
and let's have Jane Doe fail we'll set
her age to be a hundred
run that again
we failed so we were expecting a
collection uh random person age state
uh John Smith Gage State Jane Doe H
state to contain random person 12. okay
that one looks good John Smith 65
Florida that looks good and whoops uh
we're looking for Jane Doe 100 that's
not there and it couldn't find them
so again very easy
to follow very easy
failures
okay and the last one we're going to
look at today is filtering a collection
so not only can you pull out values
within the collection you can actually
filter on the collection
so here and
spaces
all right so now we're going to take
that same collection that we used
previously
but we're going to filter on the
collection so we're going to assert that
our collection test people we are going
to filter on a character
in the name so a really character in
this case is person so we want person
so I'll change that to person
I like being descriptive so we have our
person object
person
so filter on
person dot get name dot contains J
so we're going to look for
all names so it's going to return me all
the names
or all the objects in the collection
that contain the name
with the letter j capital j so
this is going to return us should return
us just John Smith and Jane Doe
which we then can do that contains only
John Smith and Jane Doe
and this should pass so if I run this
we pass
however if I look for a random person
random person does not have J in the
name and this guy should fit
and it does so we're expecting person
John Smith Jane Doe to contain only
person John Smith Jane Doe random person
but could not find the following
elements person random person so we're
looking for that J
all right so we go back
and again so it contains only and then
we can do contains
we can do all
we can do exactly
we can say null
and we can even check sequence so
there's a lot of different things we can
do with this which is really cool
right so here again we're doing person
name dot contains J
contains only John Smith
all right and the last one we're going
to look at is combining filtering and
extracting so now we can actually it
just shows you that you can do more you
can do it pretty much anything once you
start this the stream once you start the
fluent path of assert that so here we're
going to start that test people
we're going to filter like we did up
here
again on person
and we're going to do person.name
contains capital j
okay filter containing only
again John Smith Jane Doe does not
matter on the order
so up to this point we are doing exactly
what we just did in the first part so
we're going to assert that the test
people with capital J in the name should
contain Jane Doe and John Smith
however we can go further we can then
once we get these two objects
we can extract person
then we can extract their age and then
we can double check to make sure that
the age contains
65 and 99.
so here we get person we extract the age
and then we check to make sure that that
contains 65 and 99 so we can check for
the object and then we can actually
check for the values
so if we save this
that should pass
let's say our age was 100
which is wrong
we should fail
so we're expecting 65 and 99 to contain
oops we had 65 and 100 but we could not
find 100.
and that is pretty much a cert J in a
nutshell
so any questions or comments
yeah actually I did have a question
become uh the ass
um operation I know that I've seen that
used but um I myself haven't used it
I've always thought of a use case for it
though uh with reporting
um maybe not at the unit test level but
possibly even at the integration or load
testing whatever uh what are the higher
levels of testing
um using that as operation to couple
into
good job one couple into like x-ray
and you know then you're you know
reporting that stuff out uh in a
specific format
um because you've got the as operation
have you seen anything like that it's
probably uh guilty yes so um okay it's
if you go back to some of my test mg
presentations
um granted those I was not using
um assert J but it's the same practice
uh what you could do is as you create
your unit tests or you create your
individual assertions like in this case
here with the search J you can inject
the description that you want to go with
that specific test uh with the search J
at the actual assertion level which is
awesome because it goes with that fluent
that flow that chaining method where
it's easy to read left to right what's
going on
when you generate the report it's going
to appear on your report in that nice
clean concise way Tess and G allows you
to essentially override that you can do
it both at the unit test or you could
actually do it at the test Suite in in
the XML which is kind of why I like
testing g a little more than uh day unit
plus the fact that you can actually do a
lot more with uh testing G as far as
like system level testing integration
testing and things like that whereas
um like I think you've seen with
integration testing we have to do we
have to kind of budget a little bit to
make it work within uh the unit test
environment
very nice good stuff
thank you any other questions
man how big is this thing is I oh
anytime I'm thinking like Java is up I
feel like it's
pretty much done I'm thinking is this a
new a new thing in Java
no this is a library so think of this
like a plug-in like test NG it is a
library you can add to your project to
enhance your unit testing okay
good questions
I'd like to thank you for your time
you know we spend a lot of time talking
about different topics at developer we
cover different things like testing best
practices you know how to be a better
developer so if you have any ideas or
any topics that you would like us to
discuss or talk through you can reach us
at any of these locations you can email
us at info developmenter.com you can
find us uh reach us through our contact
us page on our main page developer.com
contact us we're also on YouTube
you can find the YouTube link on the
main page of our website I'm it's a very
funky URL so I'm not going to read that
out uh we're also on vimeo.com
developmenter we're still on Facebook at
facebook.com developer and we're on
Twitter at twitter.com developreneur our
goal is making every developer better
have a great day
[Music]
foreign
[Music]