That behavior is expected if you’re running a single-node cluster. The Couchbase architecture is really designed for multi-node clusters in many respects, this is just one of them.
The cb-srv domain name is only resolved at bootstrap to find the cluster. After that, it is always communicating directly to the all of the nodes in the cluster via the nodes’ addresses. In a production scenario, if a node fails then communication is still available to the other nodes in the cluster. As a new replacement node comes online, they inform the SDK and it will connect to the new node and begin using it.
Your test is failing because you’re killing the entire cluster at once, so there is no communication path to inform the SDK about the new nodes. If you were to add more nodes and repeat the test, keeping at least one node live, it should work fine.